从图像中剪切或删除与蒙版黑色像素相接触的像素

Van*_*nel -1 python opencv image

我正在尝试使用 Python 使用 OpenCV 剪切两个图像。

这个想法是使用像这样的图像:

在此输入图像描述

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

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

我该怎么做?

也许我可以在两个图像之间进行AND运算(蒙版只有 0(黑色)和 1(白色像素)。

fmw*_*w42 5

如果您要问的是如何使蒙版为黑色的图像透明以及蒙版为白色的图像不透明,则只需将蒙版添加到输入的 Alpha 通道即可。以下是如何在 Python/OpenCV 中执行此操作。(根据马克·塞切尔的评论修改)

输入:

在此输入图像描述

面具:

在此输入图像描述

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)
Run Code Online (Sandbox Code Playgroud)


结果:

在此输入图像描述