Merge pull request #2970 from PhilLab:patch-3
This commit is contained in:
		| @@ -371,6 +371,36 @@ Draws a line segment connecting two points. | ||||
| The function ``line`` draws the line segment between ``pt1`` and ``pt2`` points in the image. The line is clipped by the image boundaries. For non-antialiased lines with integer coordinates, the 8-connected or 4-connected Bresenham algorithm is used. Thick lines are drawn with rounding endings. | ||||
| Antialiased lines are drawn using Gaussian filtering. To specify the line color, you may use the macro ``CV_RGB(r, g, b)`` . | ||||
|  | ||||
| arrowedLine | ||||
| ---------------- | ||||
| Draws a arrow segment pointing from the first point to the second one. | ||||
|  | ||||
| .. ocv:function:: void arrowedLine(Mat& img, Point pt1, Point pt2, const Scalar& color,          int thickness=1, int lineType=8, int shift=0, double tipLength=0.1) | ||||
|  | ||||
|     :param img: Image. | ||||
|  | ||||
|     :param pt1: The point the arrow starts from. | ||||
|  | ||||
|     :param pt2: The point the arrow points to. | ||||
|  | ||||
|     :param color: Line color. | ||||
|  | ||||
|     :param thickness: Line thickness. | ||||
|  | ||||
|     :param lineType: Type of the line: | ||||
|  | ||||
|             * **8** (or omitted) - 8-connected line. | ||||
|  | ||||
|             * **4** - 4-connected line. | ||||
|  | ||||
|             * **CV_AA** - antialiased line. | ||||
|  | ||||
|     :param shift: Number of fractional bits in the point coordinates. | ||||
|  | ||||
|     :param tipLength: The length of the arrow tip in relation to the arrow length | ||||
|  | ||||
| The function ``arrowedLine`` draws an arrow between ``pt1`` and ``pt2`` points in the image. See also :ocv:func:`line`. | ||||
|  | ||||
|  | ||||
| LineIterator | ||||
| ------------ | ||||
|   | ||||
| @@ -2590,6 +2590,10 @@ CV_EXPORTS_AS(randShuffle) void randShuffle_(InputOutputArray dst, double iterFa | ||||
| CV_EXPORTS_W void line(CV_IN_OUT Mat& img, Point pt1, Point pt2, const Scalar& color, | ||||
|                      int thickness=1, int lineType=8, int shift=0); | ||||
|  | ||||
| //! draws an arrow from pt1 to pt2 in the image | ||||
| CV_EXPORTS_W void arrowedLine(CV_IN_OUT Mat& img, Point pt1, Point pt2, const Scalar& color, | ||||
|                      int thickness=1, int line_type=8, int shift=0, double tipLength=0.1); | ||||
|  | ||||
| //! draws the rectangle outline or a solid rectangle with the opposite corners pt1 and pt2 in the image | ||||
| CV_EXPORTS_W void rectangle(CV_IN_OUT Mat& img, Point pt1, Point pt2, | ||||
|                           const Scalar& color, int thickness=1, | ||||
|   | ||||
| @@ -1580,6 +1580,25 @@ void line( Mat& img, Point pt1, Point pt2, const Scalar& color, | ||||
|     ThickLine( img, pt1, pt2, buf, thickness, line_type, 3, shift ); | ||||
| } | ||||
|  | ||||
| void arrowedLine(Mat& img, Point pt1, Point pt2, const Scalar& color, | ||||
|            int thickness, int line_type, int shift, double tipLength) | ||||
| { | ||||
|     const double tipSize = norm(pt1-pt2)*tipLength;// Factor to normalize the size of the tip depending on the length of the arrow | ||||
|  | ||||
|     line(img, pt1, pt2, color, thickness, line_type, shift); | ||||
|  | ||||
|     const double angle = atan2( (double) pt1.y - pt2.y, (double) pt1.x - pt2.x ); | ||||
|  | ||||
|     Point p(cvRound(pt2.x + tipSize * cos(angle + CV_PI / 4)), | ||||
|                 cvRound(pt2.y + tipSize * sin(angle + CV_PI / 4))); | ||||
|     line(img, p, pt2, color, thickness, line_type, shift); | ||||
|  | ||||
|     p.x = cvRound(pt2.x + tipSize * cos(angle - CV_PI / 4)); | ||||
|     p.y = cvRound(pt2.y + tipSize * sin(angle - CV_PI / 4)); | ||||
|     line(img, p, pt2, color, thickness, line_type, shift); | ||||
|  | ||||
| } | ||||
|  | ||||
| void rectangle( Mat& img, Point pt1, Point pt2, | ||||
|                 const Scalar& color, int thickness, | ||||
|                 int lineType, int shift ) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Vadim Pisarevsky
					Vadim Pisarevsky