cv2.findContours OpenCV图形轮廓函数python

本文详细介绍了OpenCV中的cv2.findContours函数在Python中的使用,包括参数解释、不同模式(RETR_EXTERNAL, RETR_LIST, RETR_CCOMP, RETR_TREE)的效果以及对应的hierarchy值的含义,通过实例展示了如何找到图像中的轮廓及其层次关系。" 124134553,9651313,解决Element UI对话框遮挡消息通知问题,"['Vue.js', '前端开发', 'HTML5', 'JavaScript', 'ElementUI']

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

contours, hierarchy = cv2.findContours(img, mode=cv2.RETR_EXTERNAL,                                                                                                          method=cv2.CHAIN_APPROX_NONE)

输入参数:

  1. img   : 单通道二值图像,白色是前景
  2. RETR_EXTERNAL  : 只返回最外边的轮廓, hierarchy[i][2]=hierarchy[i][3]=-1
  3. CHAIN_APPROX_NONE   :  存储轮廓上的所有点

输出参数:

  1. contours    : 轮廓  M*N  M是轮廓个数  N是每个轮廓的点
  2. hierarchy   : 轮廓等级关系 M*4

不同版本的opencv中输出参数个数有3个的,有2个的,我的版本是opencv-python 4.5.3.56 

这个函数输出数里的contours很好理解,主要是后面这个hierarchy(等级关系)和后面这个mode与method的关系不是很好理解,其中,method主要是表示存储方式的不同,如下

CV_CHAIN_APPROX_NONE  :存储轮廓的所有点

CV_CHAIN_APPROX_SIMPLE :不保存轮廓中水平、垂直、对角的线段,只保存轮廓的角点

CV_CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS  应用了 Teh-Chin 链近  似算法的一种存储风格,这个我也没搞懂

剩下的就是重点,就是输出参数hierarchy和mode的关系到底是什么样的,hierarchy的四个参数到底表示的是什么意思,这四个值分别表示当前轮廓的“后前子父”对象的序号,下面看验证,首先看mode的四个选项,

  • CV_RETR_EXTERNAL :返回最外层轮廓, hierarchy[i][2]=hierarchy[i][3]=-1 
  • CV_RETR_LIST :返回所有的轮廓,但是没建立等级关系
  • CV_RETR_CCOMP :返回所有轮廓,包含两个层级结构
  • CV_RETR_TREE :返回所有轮廓,建立完整的层次结构

例子:采用图片如下:

验证1、 conto

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值