2 回答
TA贡献1829条经验 获得超6个赞
如果您要问的是如何使图像透明,其中蒙版是黑色和不透明的,而蒙版是白色的,那么只需将蒙版添加到输入的alpha通道中即可。以下是如何在Python / OpenCV中执行此操作。(根据Mark Setchell的评论进行修订)
输入:
面具:
import cv2
import numpy as np
# load image
img = cv2.imread('lena.png')
# load mask as grayscale
mask = cv2.imread('rect_mask.png', cv2.COLOR_BGR2GRAY)
# put mask into alpha channel of image
#result = img.copy()
#result = cv2.cvtColor(result, cv2.COLOR_BGR2BGRA)
#result[:, :, 3] = mask
result = np.dstack((img, mask))
# save resulting masked image
cv2.imwrite('lena_masked.png', result)
结果:
TA贡献1876条经验 获得超7个赞
我就是这样做的。
输入数组的形状为 ,输出数组的形状为 。(240, 240)(240, 240)
我将用数组中值为 0 的索引来屏蔽数组上的索引。imagemask
def cut_out(image, mask):
if type(image) != np.ndarray:
raise TypeError("image must be a Numpy array")
elif type(mask) != np.ndarray:
raise TypeError("mask must be a Numpy array")
elif image.shape != mask.shape:
raise ValueError("image and mask must have the same shape")
return np.where(mask==0, 0, image)
添加回答
举报