查找轮廓(cv2.findCountours函数)

本文详细介绍如何使用OpenCV进行图像轮廓的检测与绘制。首先,通过cv2.findContours()函数从二值图像中查找轮廓,该函数提供多种轮廓检索方式和近似方法。接着,利用cv2.drawContours()函数在原始图像上绘制找到的轮廓,实现目标区域的可视化。代码实例展示了整个过程,包括读取图像、灰度转换、二值化、轮廓检测与绘制。

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

1.输入为二值图像,黑色为背景,白色为目标

2.该函数会修改原图像,因此若想保留原图像在,则需拷贝一份,在拷贝图里修改。

一.查找轮廓

cv2.findContours()

   三个输入参数:输入图像(二值图像),轮廓检索方式,轮廓近似方法

1.轮廓检索方式

cv2.RETR_EXTERNAL只检测外轮廓
cv2.RETR_LIST检测的轮廓不建立等级关系
cv2.RETR_CCOMP建立两个等级的轮廓,上面一层为外边界,里面一层为内孔的边界信息
cv2.RETR_TREE建立一个等级树结构的轮廓

2.轮廓近似办法

cv2.CHAIN_APPROX_NONE存储所有边界点
cv2.CHAIN_APPROX_SIMPLE压缩垂直、水平、对角方向,只保留端点
cv2.CHAIN_APPROX_TX89_L1使用teh-Chini近似算法
cv2.CHAIN_APPROX_TC89_KCOS使用teh-Chini近似算法

 

    三个返回值:图像,轮廓,轮廓的层析结构

 

 

二.绘制轮廓

cv2.drawContours()

    五个输入参数:原始图像,轮廓(python列表),轮廓的索引(当设置为-1时,绘制所有轮廓),画笔颜色,画笔大小

   一个返回值:返回绘制了轮廓的图像

代码:

import cv2   
img = cv2.imread('D:\\test\\contour.jpg')    
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)    
ret, binary = cv2.threshold(gray,127,255,cv2.THRESH_BINARY)    
    
binary , contours, hierarchy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)    # 输出为三个参数  
cv2.drawContours(img,contours,-1,(0,0,255),3)    
    
cv2.imshow("img", img)    
cv2.waitKey(0)   

 

转载于:https://www.cnblogs.com/wmy-ncut/p/9889294.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值