在OpenCV2.4.9中是不存在arrowedLine这个函数的,这个函数的作用是用来画带箭头的线段。在OpenCV2.4.13,2.4.12, 2.4.11, 2.4.10中这个函数位于core.hpp,在OpenCV3.0及以上是位于imgproc.hpp中。所以OpenCV2.4.9只能自定义函数,程序如下:
void arrowedLine(Mat& img, Point pt1, Point pt2, const Scalar& color)
{
double tipLength = 0.1;
const double tipSize = norm(pt1-pt2)*tipLength;
line(img, pt1, pt2, color);
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);
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);
}
思路就是先画pt1到pt2的一条直线,然后在pt2画出两条短线来模拟箭头。