Python OpenCV 轮廓检测:代码示例和解释
使用 Python 和 OpenCV 绘制图像轮廓
本指南将介绍如何使用 Python 和 OpenCV 库绘制图像轮廓。我们将提供一个简单的代码示例,并详细解释每个步骤。
代码示例
import cv2
# 读取图像
img = cv2.imread('image.jpg')
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 阈值分割
_, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
# 查找轮廓
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 绘制轮廓
cv2.drawContours(img, contours, -1, (0, 0, 255), 3)
# 显示结果
cv2.imshow('contour', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
代码解释
- 导入 OpenCV 库:
import cv2 - 读取图像:
img = cv2.imread('image.jpg')使用cv2.imread函数读取图像文件。 - 转换为灰度图像:
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)使用cv2.cvtColor函数将彩色图像转换为灰度图像。 - 阈值分割:
_, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)使用cv2.threshold函数将灰度图像进行阈值分割,将像素值大于阈值(127)的像素设置为白色(255),其他像素设置为黑色(0)。 - 查找轮廓:
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)使用cv2.findContours函数查找图像中的轮廓。cv2.RETR_EXTERNAL表示只查找最外层轮廓,cv2.CHAIN_APPROX_SIMPLE表示只保留轮廓的端点,减少数据量。 - 绘制轮廓:
cv2.drawContours(img, contours, -1, (0, 0, 255), 3)使用cv2.drawContours函数将找到的轮廓绘制在原图上。参数解释:img: 目标图像contours: 轮廓列表-1: 绘制所有轮廓(0, 0, 255): 红色颜色3: 线宽
- 显示结果:
cv2.imshow('contour', img)使用cv2.imshow函数显示绘制了轮廓的图像。 - 等待按键:
cv2.waitKey(0)等待用户按下任何键。 - 关闭窗口:
cv2.destroyAllWindows()关闭所有窗口。
重要说明
- 该代码示例中绘制的是图像轮廓,指的是连续的曲线,可以将其看作物体的边缘。
- 如果您想要绘制物体的形状,可以使用
cv2.approxPolyDP函数将轮廓近似为多边形,并绘制多边形的边界。
希望本指南能够帮助您了解如何使用 Python 和 OpenCV 库绘制图像轮廓。如果您有任何疑问或建议,请随时留言。
原文地址: https://www.cveoy.top/t/topic/mQqn 著作权归作者所有。请勿转载和采集!