2019-6-23 opencv的轮廓检测函数findContours(使用drawContours绘制)

本文介绍了OpenCV中的轮廓检测函数cv2.findContours,包括函数定义、参数模式和逼近方法。通过实例展示了轮廓检测的过程,并与边缘检测进行了对比。此外,还详细讲解了drawContours函数的用法,包括其参数意义和如何绘制轮廓、填充颜色。最后,提到了边界框、最小矩形和最小闭圆等形状检测的应用。

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

边缘(edge):不同区域的分界线。图像局部灰度显著变化的部分。一阶导数的局部极大值,二阶导数的过零点。
在这里插入图片描述

轮廓(contour):物体在场景中的完整边界。边缘的连接构成轮廓。

边缘和轮廓关系,网上有一个解释的比较清楚:

  • 一般认为轮廓是对物体的完整边界的描述,边缘点一个个连接起来构成轮廓。边缘可以是一段边缘,而轮廓一般是完整的。

opencv中轮廓检测主要由cv2.findContours函数实现的。

函数定义如下

cv2.findContours(image, mode, method[, contours[, hierarchy[, offset ]]])  
  • image:寻找轮廓的图片对象,8位单通道图像矩阵,可以是灰度图,但更常用的是二值图像,一般是经过Canny、拉普拉斯等边缘检测算子处理过的二值图像。
  • mode:轮廓的检索模式
    • cv2.RETR_EXTERNAL表示只检测外轮廓 。
    • cv2.RETR_LIST检测的轮廓不建立等级关系。
    • cv2.RETR_CCOMP建立两个等级的轮廓,上面的一层为外边界,里面的一层为内孔的边界信息。如果内孔内还有一个连通物体,这个物体的边界也在顶层。
    • cv2.RETR_TREE建立一个等级树结构的轮廓。
  • method:轮廓的逼近方法
    • cv2.CHAIN_APPROX_NONE存储所有的轮廓点,相邻的两个点的像素位置差不超过1,即max(abs(x1-x2),abs(y2-y1))==1
    • cv2.CH
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值