您的位置:首页 > 运维架构

用OpenCV的函数convexHull做凸包(凸壳)检测

2017-12-12 10:51 381 查看
本文转载自 http://opencv66.net/thread-40-1-1.html
问:什么叫凸包?

答:凸包又叫凸壳。如果在集合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>返回点集。

示例代码如下:
代码请到原帖中查看,原帖链接 http://opencv66.net/thread-40-1-1.html

代码请到原帖中查看,原帖链接 http://opencv66.net/thread-40-1-1.html

代码请到原帖中查看,原帖链接 http://opencv66.net/thread-40-1-1.html

运行结果如下图所示:





本文转载自 http://opencv66.net/thread-40-1-1.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息