python opencv 根据宽高生成mask 将图片非感兴趣区域去掉颜色,形成黑白图
时间: 2024-02-26 11:58:11 浏览: 151
可以使用OpenCV中的cv2.rectangle方法生成mask,然后将mask应用于原始图像即可。
以下是示例代码:
```python
import cv2
import numpy as np
# 读取原始图像
img = cv2.imread('image.jpg')
# 预设宽高
width, height = 300, 400
# 生成mask,将感兴趣区域设为白色,其余部分设为黑色
mask = np.zeros(img.shape[:2], dtype=np.uint8)
mask[0:height, 0:width] = 255
# 应用mask,将非感兴趣区域设为黑色
masked_img = cv2.bitwise_and(img, img, mask=mask)
# 转换为灰度图
gray_img = cv2.cvtColor(masked_img, cv2.COLOR_BGR2GRAY)
# 二值化处理,形成黑白图
_, bw_img = cv2.threshold(gray_img, 1, 255, cv2.THRESH_BINARY)
# 显示结果
cv2.imshow('Original Image', img)
cv2.imshow('Mask', mask)
cv2.imshow('Masked Image', masked_img)
cv2.imshow('Black and White Image', bw_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个例子中,我们读取了一张名为“image.jpg”的图像,并设定了宽300和高400。然后,我们使用cv2.rectangle方法生成了一个mask,将感兴趣的区域设为白色,其余部分设为黑色。接着,我们将mask应用于原始图像,将非感兴趣区域设为黑色,并将结果转换为灰度图。最后,我们使用cv2.threshold方法对灰度图进行二值化处理,形成黑白图,并将结果显示出来。
注意,这个示例中,我们使用了cv2.rectangle方法生成了一个矩形的mask,如果需要生成其他形状的mask,可以使用其他的OpenCV方法。
阅读全文