OpenCV How to Plot velocity vectors as arrows in using single static image

前端 未结 3 1636
情深已故
情深已故 2020-12-23 22:59

I am trying to plot velocity vectors like in matlab we use \"quiver\" function http://www.mathworks.com/help/techdoc/ref/quiver.html

I need to port same methodology

3条回答
  •  爱一瞬间的悲伤
    2020-12-23 23:11

    Based on the code from Dan and the suggestion of mkuse, here is a function with the same syntax as cv::line():

    static void arrowedLine(InputOutputArray img, Point pt1, Point pt2, const Scalar& color,
    int thickness=1, int line_type=8, int shift=0, double tipLength=0.1)
    {
        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);
    }
    

    We will see if those maintaining the OpenCV repository will like it :-)

提交回复
热议问题