python opencv 根据宽高创建mask图片
时间: 2023-09-29 21:06:41 浏览: 95
可以使用NumPy库创建一个全零矩阵,然后在指定的宽高范围内将矩阵的像素值修改为1或255,从而得到一个mask图片。
下面是一个示例代码,其中宽为100,高为200:
```
import numpy as np
import cv2
width = 100
height = 200
mask = np.zeros((height, width), dtype=np.uint8)
mask[50:150, 25:75] = 255
cv2.imshow('Mask Image', mask)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这个代码会创建一个200x100的全零矩阵,然后将其第50到150行、第25到75列的像素值设置为255,最后显示这个mask图片。
相关问题
python opencv 根据宽高生成mask 将图片非感兴趣区域去掉颜色,形成黑白图
可以使用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方法。
python opencv 根据给定的mask生成透明背景图
在OpenCV中,可以使用cv2.merge()函数将带有alpha通道的图像合并成四个通道的图像。如果要创建一个透明背景图像,只需要将alpha通道设置为0即可。
下面是一个示例代码,用于生成一个透明背景图像:
```python
import cv2
import numpy as np
# 读取原始图像和mask
img = cv2.imread('image.png')
mask = cv2.imread('mask.png', 0)
# 将mask转换为三通道
mask = cv2.cvtColor(mask, cv2.COLOR_GRAY2BGR)
# 合并图像和mask
result = cv2.merge((img, mask))
# 将alpha通道设置为0
result[:, :, 3] = mask[:, :, 0]
# 保存透明背景图像
cv2.imwrite('result.png', result)
```
在这个示例中,我们首先读取了原始图像和mask,并将mask转换为三通道。然后,使用cv2.merge()函数将原始图像和mask合并为一个四通道的图像。最后,将alpha通道设置为mask的值,将透明背景图像保存到文件中。
请注意,这个示例假设mask已经是一个二值图像,其中白色表示前景,黑色表示背景。如果mask不是一个二值图像,你需要使用阈值或其他技术将其转换为二值图像。
阅读全文