凸包是一个计算几何图形学中的概念,在二维欧几里得空间中,凸包可以想象成一条刚好包住所有点的橡皮圈。对于给定二维平面上的点集,凸包常常就是将最外层的点连接起来构成的凸多边形,它能包含点击中所有的点。物体的凸包检测常应用在物体识别、手势识别及边界检测等领域。
OpenCV中提供了函数convexHull 用于对物体轮廓凸包进行检测
C++: void convexHull(InputArray points, OutputArray hull, bool clockwise=false, bool returnPoints=true )
point : 输入的二维点集,可储存在向量或矩阵Mat中
hull : 输出凸包,这是一个整数索引的载体或点的矢量,可以是vector<vector<Point>>
和vector<vector<int>>
clockwise : 方向标志位
return Point :操作标准位
使用convexityDefects()函数分析形状凸包缺陷
void convexityDefects(InputArray contours,InputArray convexhull,OutputArray convexityDefects)
contours : 输入参数检测到的轮廓,可以通过调用获取轮廓函数findContours()获得
convexhull : 输入参数检测到的凸包,为vector<vector<int>>
类型
convexityDefects