使用 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()

代码解释

  1. 导入 OpenCV 库: import cv2
  2. 读取图像: img = cv2.imread('image.jpg') 使用 cv2.imread 函数读取图像文件。
  3. 转换为灰度图像: gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 使用 cv2.cvtColor 函数将彩色图像转换为灰度图像。
  4. 阈值分割: _, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) 使用 cv2.threshold 函数将灰度图像进行阈值分割,将像素值大于阈值(127)的像素设置为白色(255),其他像素设置为黑色(0)。
  5. 查找轮廓: contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) 使用 cv2.findContours 函数查找图像中的轮廓。cv2.RETR_EXTERNAL 表示只查找最外层轮廓,cv2.CHAIN_APPROX_SIMPLE 表示只保留轮廓的端点,减少数据量。
  6. 绘制轮廓: cv2.drawContours(img, contours, -1, (0, 0, 255), 3) 使用 cv2.drawContours 函数将找到的轮廓绘制在原图上。参数解释:
    • img: 目标图像
    • contours: 轮廓列表
    • -1: 绘制所有轮廓
    • (0, 0, 255): 红色颜色
    • 3: 线宽
  7. 显示结果: cv2.imshow('contour', img) 使用 cv2.imshow 函数显示绘制了轮廓的图像。
  8. 等待按键: cv2.waitKey(0) 等待用户按下任何键。
  9. 关闭窗口: cv2.destroyAllWindows() 关闭所有窗口。

重要说明

  • 该代码示例中绘制的是图像轮廓,指的是连续的曲线,可以将其看作物体的边缘。
  • 如果您想要绘制物体的形状,可以使用 cv2.approxPolyDP 函数将轮廓近似为多边形,并绘制多边形的边界。

希望本指南能够帮助您了解如何使用 Python 和 OpenCV 库绘制图像轮廓。如果您有任何疑问或建议,请随时留言。

Python OpenCV 轮廓检测:代码示例和解释

原文地址: https://www.cveoy.top/t/topic/mQqn 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录