OpenCV boundingRect、minAreaRect的用法區別


當得到對象輪廓后,可用boundingRect()得到包覆此輪廓的最小正矩形,minAreaRect()得到包覆輪廓的最小斜矩形。

1)Rect boundingRect(InputArray points)

points:輸入信息,可以為包含點的容器(vector)或是Mat。
返回包覆輸入信息的最小正矩形。如下圖:

2)RotatedRect minAreaRect(InputArray points)

points:輸入信息,可以為包含點的容器(vector)或是Mat。

返回包覆輸入信息的最小斜矩形。如下圖:

【說明】

如果參數是Mat類型的(注意需要是N行2列),必須滿足depth == CV_32F || depth == CV_32S,且checkVector(2)才可以,否則會報錯【minAreaRect()中主要調用的求凸包的函數convexHull()會檢查Mat滿不滿足上面的條件】。

Mat::depth()函數:求矩陣中元素的一個通道的數據類型,這個值和type是相關的。

Mat::checkVector()函數:當Mat的channels,depth,和連續性  滿足checkVector的參數內容時,返回(int)(total()*channels()/_elemChannels), 否則返回-1。checkVector(2),要求矩陣的列數位2。

注意:第二種(紅色框)求得是真正的最小外接矩形,如下圖所示說明。


免責聲明!

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



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