在opencv中没有可以直接画箭头的方法,但是可以利用cvline方法来解决画箭头的问题。画箭头非常常用,在图像中标定运动方向中经常用到,如光流法等。
以下是解决方案。
double alpha_angle;//弧度
CvScalar line_color;
line_color = CV_RGB(0,0,255);
cv::Point pt1 = cvPoint(5,5);//起点
cv::Point pt2 = cvPoint(5,36); //终点
cvLine(src,pt1,pt2,CV_RGB(0,0,255),1,8,0);//起点和终点间画直线
float xx=pt2.x-pt1.x;
float yy=pt2.y-pt1.y;
if(xx<ZERO && xx>-ZERO)//ZERO是坐标的原点
alpha_angle = pi/2;
else
alpha_angle = abs(atan(yy/xx));
//调整角度
if(xx<0 && yy>0) alpha_angle = pi - alpha_angle ;
if(xx<0 && yy<0) alpha_angle = pi + alpha_angle ;
if(xx>0 && yy<0) alpha_angle = 2*pi - alpha_angle ;
CvPoint p;//pt2是箭头的尖角顶点,而p是箭头两边的点。箭头是由p-pt2和pt2-p的两条线段(p赋了两次不同的值,前后不是一个点),以及pt1-pt2