cv2 contours mask
时间: 2023-10-19 18:24:08 浏览: 72
python cv2截取不规则区域图片实例
在 OpenCV 中,轮廓(contours)是图像中具有相同颜色或强度的连续曲线,通常用于图像分割和对象识别。轮廓提取可以通过使用 cv2.findContours() 函数来实现。另外,可以使用 cv2.drawContours() 函数在图像上绘制轮廓。
在某些情况下,我们需要将轮廓应用于图像的遮罩层,以便只显示轮廓内的区域。这可以通过使用 cv2.drawContours() 函数的第三个参数来实现,该参数指定要绘制轮廓的索引(-1 表示绘制所有轮廓),并使用 cv2.fillPoly() 函数将轮廓内的区域填充为白色(255)。
以下是一个简单的示例代码,说明如何绘制轮廓遮罩:
```
import cv2
# 读取图像
img = cv2.imread('image.jpg')
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 提取轮廓
contours, hierarchy = cv2.findContours(gray, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 创建一个空白的遮罩
mask = np.zeros_like(gray)
# 绘制轮廓
cv2.drawContours(mask, contours, -1, 255, thickness=-1)
# 显示遮罩和原始图像
cv2.imshow('mask', mask)
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个示例中,我们首先读取了一张图像,然后将其转换为灰度图像。接下来,我们使用 cv2.findContours() 函数提取轮廓,并使用 cv2.drawContours() 函数在空白的遮罩上绘制轮廓。最后,我们将遮罩和原始图像显示出来,以便查看结果。
阅读全文