Python-OpenCV实现物体轮廓检测并标识

首页 / 学习笔记 / 正文

实现步骤

导入库

import cv2

处理图片

img = cv2.imread('D:\ls\ls1.png')
#高斯滤波
gaussian = cv2.GaussianBlur(img, (5, 5), 10)
cv2.imshow('gaussian', img)
#灰度化图片
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

利用阈值自动选择的方法获取二值图像

ret, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY+cv2.THRESH_OTSU)

检测轮廓

contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
edges = cv2.Canny(img,200,650)

画出轮廓

cv2.drawContours(img, contours, -1, (0, 255, 0), 1)

完整代码

import cv2
# 轮廓检测
img = cv2.imread('D:\sb\ls1.jpg')
#高斯滤波
gaussian = cv2.GaussianBlur(img, (5, 5), 10)
cv2.imshow('gaussian', img)
#灰度化图片
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 利用阈值自动选择的方法获取二值图像
ret, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY+cv2.THRESH_OTSU)
contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)  # 检测轮廓
edges = cv2.Canny(img,200,650)
cv2.drawContours(img, contours, -1, (0, 255, 0), 1)  # 画出轮廓

cv2.imshow('gray', img)
cv2.imshow('canny',edges)
#cv2.imshow('res', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

标识结果

微信图片_20220419163146.png

打赏
评论区
头像