网站怎么显示建设中,威海建设局官方网站,中山网站关键词排名,企业邮箱和个人邮箱的区别文章目录 前言一、寻找、绘制轮廓二、具体应用代码 前言 寻找目标图像的轮廓并绘制出该轮廓是我们进行图像识别时常用的手段#xff0c;轮廓是图像中连续的边界线#xff0c;可以用于物体检测、形状分析等应用。为了获取更高的准确性#xff0c;会先进行二值化处理#xff… 文章目录 前言一、寻找、绘制轮廓二、具体应用代码 前言 寻找目标图像的轮廓并绘制出该轮廓是我们进行图像识别时常用的手段轮廓是图像中连续的边界线可以用于物体检测、形状分析等应用。为了获取更高的准确性会先进行二值化处理在得到二进制图像后寻找轮廓就是从黑色背景中找到白色物体因此我们要找的对象应是白色背景应该是黑色。 一、寻找、绘制轮廓
一寻找图像轮廓
寻找图像轮廓函数如下
contours, hierarchy cv2.findContours(img,mode,method)
其中的三个参数分别为
1“img” 要寻找轮廓的图像
2“mode” 代表轮廓的检测模式具体取值范围如下表
取值含义 cv.2RETR_EXTERNAL 0 只检测最外面的轮廓 cv2.RETR_LIST 1 检测所有轮廓不建立等级关系所有轮廓放在一个列表中 cv2.RETR_CCOMP 2 检索所有的轮廓并将它们组织为两层 cv2.RETR_TREE 3 按照树形存储轮廓从右到左一层一层检测
3“method” 代表近似查找轮廓的方法具体取值范围如下
取值含义 cv2.CHAIN_APPROX_NONE 保存所有轮廓上的点 cv2.CHAIN_APPROX_SIMPLE 压缩水平的、垂直的、斜的部分即只保留他们的角点坐标例如一个矩形轮廓只需 4 个点来保存轮廓信息 此外寻找轮廓函数还有两个返回值具体如下
1“contours”是一个列表包含检测到的轮廓。每个轮廓都是一个由点组成的数组而这个返回值也是绘制轮廓时最重要的参数
2“hierarchy ” 是一个包含轮廓层级关系的数组即轮廓与轮廓之间的层级关系。每个轮廓的层级关系由四个整数值表示[next, previous, first child, parent]不同的层级都有不同的索引相当于编号 二绘制图像轮廓
绘制图像轮廓函数如下
cv2.drawContours(image, contours, contourIdx, color, thickness)
其中五个参数分别为
1“image” 要在其上绘制轮廓的图像
2“contours” 要绘制的轮廓通常是通过 cv2.findContours 函数获得的轮廓列表
3“contourIdx” 要绘制的轮廓的索引。如果为负数则绘制所有的轮廓
4“color” 绘制轮廓的颜色可以是一个三元组 (B, G, R) 表示的颜色值
5“thickness” 绘制轮廓的线条粗细。如果为负数或 cv2.FILLED则填充轮廓内部 二、具体应用代码 寻找、绘制图像轮廓的具体代码如下
import cv2img cv2.imread(KAI.jpg)# 图像二值化
img_gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, img2 cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY)# 寻找、绘制轮廓
contours, hierarchy cv2.findContours(img2, 3, cv2.CHAIN_APPROX_SIMPLE)
img cv2.drawContours(img, contours, -1, (0,255,0), 2)# 显示图像
cv2.imshow(image, img)
cv2.waitKey(0)
cv2.destroyAllWindows()