目录
一、基础理论
1、轮廓概述
2、cv.findContours函数(查找轮廓)
3、cv.drawContours函数(画出轮廓)
二、代码
三、效果
参考资料
一、基础理论
1、轮廓概述
边缘和轮廓区别:边缘是零散的点,轮廓是整体。
在二值图中找轮廓
2、cv.findContours函数(查找轮廓)
contours, hierarchy = cv2.findContours(img,mode,method)
参数:?
?返回:
contours:轮廓
hierarchy:层级
# 3、根据二值图找到轮廓
contours, hierarchy = cv.findContours(binary, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)
#轮廓 层级 轮廓检索模式(推荐此) 轮廓逼近方法
3、cv.drawContours函数(画出轮廓)
dst = cv.drawContours(dst, contours, -1, (0,0,255), 3)
# 轮廓 第几个(默认-1:所有) 颜色 线条厚度
二、代码
# 轮廓提取
import cv2 as cv
img = cv.imread('Resource/test.jpg')
cv.imshow('img', img)
# 1、灰度图
imgray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
cv.imshow('imgray', imgray)
# 2、二进制图像
ret, binary = cv.threshold(imgray, 127, 255, 0) #ret:阈值 binary:二进制图像
cv.imshow('binary', binary)
# 3、根据二值图找到轮廓
contours, hierarchy = cv.findContours(binary, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)
# 4、画出轮廓
dst = img.copy()
dst = cv.drawContours(dst, contours, -1, (0,0,255), 3)
# 轮廓 第几个(默认-1:所有) 颜色 线条厚度
cv.imshow('dst', dst)
cv.waitKey(0)
三、效果
参考资料
https://www.bilibili.com/video/BV1PV411774y?p=25
|