寻找物体的凸包

凸包是计算几何(图形学)中常见的概念,简单来说就是二维平面上的点集,凸包就是将最外层的点连接起来形成凸多边形,它能包含点集中的所有点的,理解物体形状或者轮廓的一种有用的方法,然后计算凸缺陷,
很多复杂的物体的特性都能很好的被这种缺陷表现出来
2.用手这一个概念来解释凸缺陷,凸缺陷就是代表了所有的凸包的边,边就是代表了凸缺陷的。
3.在opencv中convexHull()函数用于寻找图像点集中的凸包。
4.寻找凸包convexHull函数:
C++:void convexHull(InputArray points,OutputArray hull,bool clockwise=false;bool returnPoints=true)
1.参数1.输入的二维点集:可以填Mat类型的也可以填std::vector也就是真正的二维点 vector points定义二维点
2.参数2.函数调用之后找到的凸包。
3.参数3.操作方向标识符,假定凸包的方向的,有顺时针和逆时针的凸包真代表顺时针,假代表逆时针
4.默认值true函数返回凸包的各个点,否则返回凸包的各个点的指数定义随机数量的时候利用
RNG& rng=theRNG(); int count=rng.uniform(3,120);随机产生的点数量,在进行限制范围就可以操作点范围的
寻找和绘制物体的凸包:凸包属于多边形也就是它的数据类型就是二维点向量(轮廓)vector<vector> hull;
寻找和绘制物体的凸包:
1.寻找物体的轮廓,把所有的轮廓找出来
2.遍历所有的轮廓,用convexHull函数将轮廓的所有的凸包找出来 //遍历的次数就是轮廓的数量
3.用遍历的手法绘制出所有的轮廓和凸包,在遍历循环中绘制物体的轮廓和凸包
drawContours(定义的装轮廓和凸包的容器Mat类型的,轮廓或者视凸包,遍历标签,颜色,线宽,线型,可选的层次信息vector(),0,Point());

猜你喜欢

转载自blog.csdn.net/nbxuwentao/article/details/86619448