使用cvMinAreaRect2画外接矩形的基本步骤是:
CvBox2D rect=cvMinAreaRect2(contourSeq, storage4maxcontour);
CvPoint2D32f rect_pts0[4];
cvBoxPoints(rect, rect_pts0);
实验发现,cvBoxPoints(rect, rect_pts0)储存顶点的顺序会因为轮廓的不同而不同;
所以为了得到想要的顶点顺序需要通过算法来实现。
CvPoint Corner[4];
corner[0]=rect_pts[0];
corner[2]=rect_pts[0];
for (int i=0;i<4;i++)
{
if(rect_pts[i].x<=corner[0].x)
corner[0].x= rect_pts[i].x;
if(rect_pts[i].y<=corner[0].y)
corner[0].y= rect_pts[i].y;
}//确定外接矩形左上顶点
for (int i=0;i<4;i++)
{
if(rect_pts[i].x>=corner[2].x)
corner[2].x= rect_pts[i].x;
if(rect_pts[i].y>=corner[2].y)
corner[2].y= rect_pts[i].y;
}//确定外接矩形右下顶点
如此得到以左上顶点为起始,逆时针顺序的四个顶点。

博客介绍了使用cvMinAreaRect2画外接矩形的基本步骤,通过代码展示操作过程。同时指出cvBoxPoints储存顶点的顺序会因轮廓不同而不同,需通过算法实现想要的顶点顺序,最终可得到以左上顶点为起始、逆时针顺序的四个顶点。

2483

被折叠的 条评论
为什么被折叠?



