OpenCV中的轮廓发现和轮廓绘制

本文介绍了如何使用OpenCV库进行轮廓检测和绘制。首先,通过读取图片并应用中值滤波来预处理图像。然后,将图像转换为灰度,并使用Otsu二值化进行阈值处理。接着,使用`findContours`函数找到图像中的轮廓,并通过`drawContours`函数在原图像上绘制这些轮廓。最后展示处理后的图像。

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

OpenCV中的轮廓发现和轮廓绘制

代码实现:
import cv2
import numpy as np

#轮廓发现和轮廓绘制
img = cv2.imread('cat.jpg')
cv2.imshow('img',img)
img = cv2.medianBlur(img,5)
cv2.imshow('blur',img)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret,binary = cv2.threshold(gray,0,255,cv2.THRESH_BINARY|cv2.THRESH_OTSU)
cv2.imshow('binary img',binary)
#img是一张与binary类似的二值图,contours是list列表结构每个元素包含一个边沿信息,heriachy是一个矩阵,用处作者也未知,可以探讨
contours,heriachy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
#第三个参数是引索,是第几个轮廓,赋值为-1则为所有引索,否则需要配合for循环和enumerate函数使用
#最后一个参数为绘制轮廓的像素宽度,赋值为-1则会自动填充轮廓内部
#drawcontours可以配合各种边缘检测算子使用
cv2.drawContours(img,contours,-1,(255,200,200),2)
cv2.imshow('contour',img)
cv2.waitKey()

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值