當得到對象輪廓后,可用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。
注意:第二種(紅色框)求得是真正的最小外接矩形,如下圖所示說明。