OpenCv 關於cvMinAreaRect2+cvBoxPoints畫最小外接矩形


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         }//確定外接矩形右下頂點

如此得到以左上頂點為起始,逆時針順序的四個頂點。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM