为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

猛跑小猪 2022-08-02 18:28:23
我试图使用Python使用OpenCV剪切出两个图像。我们的想法是使用这样的图像:作为面具。注意:这只是一个例子。因此,如果我将此蒙版减去另一个图像,我将得到一个原始像素仅与蒙版中的白色矩形位于相同位置的图像。因此,我们的想法是从第一个图像中删除像素,这些像素与蒙版中的黑色图像位于同一位置。我该怎么做?也许我可以在两个图像之间执行AND操作(遮罩只有0(黑色)和1(白色像素)。
查看完整描述

2 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

如果您要问的是如何使图像透明,其中蒙版是黑色和不透明的,而蒙版是白色的,那么只需将蒙版添加到输入的alpha通道中即可。以下是如何在Python / OpenCV中执行此操作。(根据Mark Setchell的评论进行修订)

输入:

//img1.sycdn.imooc.com//62e8fc6d00010ef802560258.jpg

面具:

//img1.sycdn.imooc.com//62e8fc740001db7602340231.jpg

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)

结果:


//img1.sycdn.imooc.com//62e8fc820001b5a701830204.jpg

查看完整回答
反对 回复 2022-08-02
?
幕布斯6054654

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)


查看完整回答
反对 回复 2022-08-02
  • 2 回答
  • 0 关注
  • 136 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信