OpenCV凸包凸缺陷检测

本文介绍了如何使用OpenCV进行凸包和凸缺陷检测。通过convexityDefects函数,我们可以获取蓝色凸包、黑色起始点、绿色结束点和红色最深点的信息。每个凸缺陷由Vec4i结构表示,包含开始点、结束点、最远点和深度信息。
摘要由CSDN通过智能技术生成

左边原图,右边结果。

右图中,蓝色线为凸包,凸缺陷的起始点为黑色点,凸缺陷的起始点为绿色点,凸缺陷的最深点为红色点(即边缘点到凸包距离最大点)。

void convexityDefects(InputArray contour, InputArray convexhull, OutputArray convexityDefects)
      convexityDefects 是存储 Vec4i 的向量(vector<varname>),函数计算成功后向量的大小是轮廓凸缺陷的数量,向量每个元素Vec4i存储了4个整型数据,

因为Vec4i对[]实现了重载,所以可以使用 _vectername[i][0] 来访问向量 _vactername 的第i个元素的第一个分量。再说 Vec4i 中存储的四个整形数据,OpenCV 使用这四个元素表示凸缺陷,

Vec4i 第一个元素 start_index,表示缺陷在轮廓上的开始处,他的值是开始点在函数第一个参数 contour 中的下标索引;

Vec4i 第二个元素 end_index, 顾名思义其对应的值就是缺陷结束处在 contour 中的下标索引;

Vec4i 第三个元素 farthest_pt_index, 是缺陷上距离 轮廓凸包(convexhull)最远的点;

Vec4i最后的元素 fixpt_depth,fixpt_depth/256  表示了 轮廓上以 farthest_pt_index 为下标的点到 轮廓凸包的(convexhull)的距离,以像素为单位。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值