Drawing opencv?

Drawing opencv?

本文关键字:opencv Drawing      更新时间:2023-10-16

如何在OpenCV中绘制CvBox2D ?是否有任何类似的函数cvRectangle?

代码示例将被欣赏

谢谢

没有像cvRectangle这样的CvBox2D函数。这是CvBox2D的结构:

typdef struct {
CvPoint2D32f center;
CvSize2D32f size;
float angle;
} CvBox2D;

您可以使用cvBoxPoints来获取矩形的点,然后将矩形绘制为一组线。

void cvBoxPoints(CvBox2D box, CvPoint2D32f pt[]);

您甚至可以使用cvPolyLine来更轻松地绘制线条。

void cvPolyLine(CvArr* img, CvPoint** pts, int* npts, int contours, int isClosed, CvScalar color, int thickness=1, int lineType=8, int shift=0 )

在iplimage中绘制旋转的矩形。

void DrawRotatedRect( IplImage * iplSrc,CvBox2D rect,CvScalar color, int thickness CV_DEFAULT(1),int line_type CV_DEFAULT(8), int shift CV_DEFAULT(0));
void DrawRotatedRect( IplImage * iplSrc,CvBox2D rect,CvScalar color, int thickness, int line_type, int shift )  
{   
CvPoint2D32f boxPoints[4];
cvBoxPoints(rect, boxPoints);
cvLine(iplSrc,cvPoint((int)boxPoints[0].x, (int)boxPoints[0].y),cvPoint((int)boxPoints[1].x, (int)boxPoints[1].y),color,thickness,line_type,shift);
cvLine(iplSrc,cvPoint((int)boxPoints[1].x, (int)boxPoints[1].y),cvPoint((int)boxPoints[2].x, (int)boxPoints[2].y),color,thickness,line_type,shift);
cvLine(iplSrc,cvPoint((int)boxPoints[2].x, (int)boxPoints[2].y),cvPoint((int)boxPoints[3].x, (int)boxPoints[3].y),color,thickness,line_type,shift);
cvLine(iplSrc,cvPoint((int)boxPoints[3].x, (int)boxPoints[3].y),cvPoint((int)boxPoints[0].x, (int)boxPoints[0].y),color,thickness,line_type,shift);   
}