Hai
使用 cvMinAreaRect2畫外接矩形是基本步驟是這樣的:
CvBox2D rect=cvMinAreaRect2(contourSeq,storage4maxcontour);
CvPoint2D32f rect_pts0[4];
cvBoxPoints(rect, rect_pts0);
經過實驗發現 cvBoxPoints(rect, rect_pts0)儲存頂點的順序會因為輪廓的不同而不同
所以為了得到想要的頂點順序需要通過算法來實現:
1 CvPoint Corner[4]; 2 corner[0]=rect_pts[0]; 3 corner[2]=rect_pts[0]; 4 for (int i=0;i<4;i++) 5 { 6 if(rect_pts[i].x<=corner[0].x) 7 8 corner[0].x= rect_pts[i].x; 9 10 if(rect_pts[i].y<=corner[0].y) 11 12 corner[0].y= rect_pts[i].y; 13 14 }//確定外接矩形左上頂點 15 16 for (int i=0;i<4;i++) 17 { 18 if(rect_pts[i].x>=corner[2].x) 19 20 corner[2].x= rect_pts[i].x; 21 22 if(rect_pts[i].y>=corner[2].y) 23 24 corner[2].y= rect_pts[i].y; 25 26 }//確定外接矩形右下頂點
如此得到以左上頂點為起始,逆時針順序的四個頂點。
