首页 > 解决方案 > 从图像中切出或移除遇到蒙版黑色像素的像素

问题描述

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

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

在此处输入图像描述

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

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

我该怎么做?

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

标签: pythonimageopencv

解决方案


如果您要问的是如何使蒙版为黑色的图像透明而蒙版为白色的不透明,那么只需将蒙版添加到输入的 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)


结果:

在此处输入图像描述


推荐阅读