OpenCV2.4.9中arrowedLine不存在的问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lkj345/article/details/80789468

在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画出两条短线来模拟箭头。

猜你喜欢

转载自blog.csdn.net/lkj345/article/details/80789468