用python检测并绘制轮廓把第一个轮廓用灰色填充
下面是一个使用OpenCV库实现的示例代码,其中包括了检测并绘制轮廓、填充轮廓等功能:
import cv2
# 读取图像
img = cv2.imread('example.jpg')
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 二值化处理
ret, thresh = cv2.threshold(gray, 127, 255, 0)
# 检测轮廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 绘制轮廓
cv2.drawContours(img, contours, 0, (0, 255, 0), 3)
# 填充轮廓
cv2.fillPoly(img, pts=[contours[0]], color=(192, 192, 192))
# 显示图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
在这个示例代码中,我们首先读取了一张图像,并将其转换为灰度图像。然后使用二值化处理方法将图像转换为黑白图像,以便于检测轮廓。接着使用OpenCV的findContours函数检测轮廓,并使用drawContours函数绘制轮廓。
在绘制完轮廓之后,我们使用fillPoly函数填充第一个轮廓,并将颜色设置为灰色。最后使用imshow函数显示图像,等待用户按下任意键后关闭窗口。
需要注意的是,在使用OpenCV的findContours函数时,返回的轮廓列表是按照面积从大到小排列的,因此我们在这里直接使用了第一个轮廓。如果需要绘制或填充其他轮廓,可以通过遍历列表来实现。
原文地址: https://www.cveoy.top/t/topic/bp3Z 著作权归作者所有。请勿转载和采集!