从图像中剪切或删除进入蒙版黑色像素的像素

我试图使用Python使用OpenCV剪切出两个图像。

我们的想法是使用这样的图像:

http://img.mukewang.com/62e8fc5c0001c83403570373.jpg

作为面具。注意:这只是一个例子。

因此,如果我将此蒙版减去另一个图像,我将得到一个原始像素仅与蒙版中的白色矩形位于相同位置的图像。因此,我们的想法是从第一个图像中删除像素,这些像素与蒙版中的黑色图像位于同一位置。

我该怎么做?

也许我可以在两个图像之间执行AND操作(遮罩只有0(黑色)和1(白色像素)。


猛跑小猪
浏览 137回答 2
2回答

肥皂起泡泡

如果您要问的是如何使图像透明,其中蒙版是黑色和不透明的,而蒙版是白色的,那么只需将蒙版添加到输入的alpha通道中即可。以下是如何在Python / OpenCV中执行此操作。(根据Mark Setchell的评论进行修订)输入:面具:import cv2import numpy as np# load imageimg = cv2.imread('lena.png')# load mask as grayscalemask = 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] = maskresult = np.dstack((img, mask))# save resulting masked imagecv2.imwrite('lena_masked.png', result)结果:

幕布斯6054654

我就是这样做的。输入数组的形状为 ,输出数组的形状为 。(240, 240)(240, 240)我将用数组中值为 0 的索引来屏蔽数组上的索引。imagemaskdef 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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python