图像连通域findContours和drawContours函数详解

本文详细介绍了OpenCV中的findContours函数,用于在二值图像中查找轮廓,以及drawContours函数,用于在图像上绘制轮廓。内容包括各参数的功能解释及其在轮廓检测和形状分析中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

void findContours( InputOutputArray image, OutputArrayOfArrays contours,
                              OutputArray hierarchy, int mode,
                              int method, Point offset = Point());

函数功能:在二值图像中查找轮廓。

轮廓检测的作用:轮廓检测常用于形状分析以及物体检测与识别。可参考opencv示例程序squares.cpp

opencv3.2之前,该函数功能没有改变。

第一个参数image: 输入的二值图像。

第二个参数contours: 检测得到的轮廓,轮廓保存在二维向量中。

第三个参数hierarchy: 对于检测到的每一个轮廓,都包含4个轮廓结构关系。我暂时理解为轮廓之间的对应关系,具体什么作用没有仔细研究过。所使用的代码只是用于保存轮廓关系,还没有使用到这个轮廓关系。

第四个参数mode: 轮廓检索模式。一般使用枚举的数据类型,参数为0-4总共5中模式。RETR_EXTERNAL=0只检索极端的外部轮廓, 它为[hierarchy] [i] [2] = hierarchy [i] [3] = - 1设置所有的轮廓。RETR_LIST= 1,检索所有轮廓而不建立任何轮廓关系。模式2  , 检索所有轮廓,并将它们组织成两级分层结构。在顶部级别,组件的外部边界。 在第二级,有洞的边界。如果在连接组件的孔内还有另一个轮廓,仍然处于最高水平。模式3,检测所有轮廓,并且重建嵌套轮廓的完整层次结构。

第五个参数method: 等值逼近。 method=2, 压缩水平线,垂直线,和对角线线段。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值