1. 程式人生 > >0036-用OpenCV的函式convexHull做凸包(凸殼)檢測

0036-用OpenCV的函式convexHull做凸包(凸殼)檢測

問:什麼叫凸包?
答:凸包又叫凸殼。如果在集合A內連線任意兩個點的直線段都在A的內部,則稱集合A是凸形的。直觀的理解,就是一個多邊型,沒有凹的地方。凸包能包含點集中所有的點,凸包檢測常應用在物體識別、手勢識別及邊界檢測等領域。

OpenCV中提供了函式convexHull()用於對物體輪廓凸包進行檢測。

這個函式的原型如下
C++: void convexHull(InputArray points, OutputArray hull, bool clockwise=false, bool returnPoints=true )
引數意義如下
points:輸入點集。
hull:檢測得到的凸包。它要麼是整型向量要麼是點向量。如果是整型向量,這些整型值是輸入點集的索引值(因為凸包是輸入點集的子集)。
clockwise

:方向標誌。如果為ture,代表方向為順時針,如果為false,代表方向是逆時針。系統假定x軸向右和y軸向上為正方向。
returnPoints:當這個值為ture時,函式返回點集,否則返回索引值。當輸出陣列為std::vector時,標誌無效,此時輸出型別取決於std::vector的型別。std::vector<int> 返回索引值;std::vector<Point>返回點集。

示例程式碼如下

程式碼請加Q2034196302獲取
程式碼請加Q2034196302獲取
程式碼請加Q2034196302獲取


執行結果如下圖所示