推荐答案
在 OpenCV 中,绘制轮廓通常使用 cv2.drawContours() 函数。以下是一个简单的示例代码:
// www.javascriptcn.com code example
import cv2
import numpy as np
# 读取图像
image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
# 二值化处理
_, binary = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY)
# 查找轮廓
contours, _ = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 创建一个空白图像用于绘制轮廓
output_image = np.zeros((image.shape[0], image.shape[1], 3), dtype=np.uint8)
# 绘制轮廓
cv2.drawContours(output_image, contours, -1, (0, 255, 0), 2)
# 显示结果
cv2.imshow('Contours', output_image)
cv2.waitKey(0)
cv2.destroyAllWindows()本题详细解读
1. 读取图像
首先,使用 cv2.imread() 函数读取图像。为了简化轮廓检测,通常将图像转换为灰度图像。
2. 二值化处理
使用 cv2.threshold() 函数对图像进行二值化处理。二值化是将图像转换为黑白图像的过程,便于后续的轮廓检测。
3. 查找轮廓
使用 cv2.findContours() 函数查找图像中的轮廓。该函数返回两个值:轮廓列表和层次结构。轮廓列表是一个包含所有轮廓的列表,每个轮廓是一个点的数组。
4. 创建空白图像
为了在原始图像上绘制轮廓,通常创建一个空白的三通道图像(彩色图像),以便绘制彩色轮廓。
5. 绘制轮廓
使用 cv2.drawContours() 函数绘制轮廓。该函数的参数包括:
image: 要绘制轮廓的图像。contours: 轮廓列表。contourIdx: 要绘制的轮廓索引,-1表示绘制所有轮廓。color: 轮廓的颜色,通常使用 BGR 格式。thickness: 轮廓线的厚度。
6. 显示结果
最后,使用 cv2.imshow() 函数显示绘制了轮廓的图像,并使用 cv2.waitKey() 和 cv2.destroyAllWindows() 函数等待用户关闭窗口。