繁体   English   中英

如何将图像的蒙版部分叠加到新图像上?

[英]How to superimpose masked part of image to a new image?

对于这个基本问题,我真的很抱歉,但我是 OpenCV 和图像处理的新手,并且在摆弄了一段时间后无法弄清楚这一点。

这是我想要做的:

我有一个透明的 PNG 图片:

原图

我从中创建了一个二进制蒙版,透明区域为黑色,对象为白色:

二进制掩码

现在,我有另一个像这样的图像,具有相同的尺寸:

图案图像

现在,我希望将第一张图像(实际对象)中的白色蒙版部分叠加到该图像上。 我该怎么做呢?

这是一种方法:

import cv2

# Load images
bg     = cv2.imread('bg.png')                                                                 
object = cv2.imread('object.png')                                                         
mask   = cv2.imread('mask.png')                                                             

# Zero background where we want to overlay
bg[mask>0]=0                                                                              

# Add object to zeroed out space
bg += object*(mask>0)                                                                     

cv2.imwrite('result.png',bg)  

在此处输入图片说明

使用我们手头有 numpy 数组的事实,我们可以首先将掩码扩展到三个维度:

# Case 1: original mask is OpenCV mask (foreground values 255)
mask = np.dstack([(mask > 0)]*3)
# Case 2: original mask is already boolean
mask = np.dstack([mask]*3)

然后使用遮罩复制图像:

np.copyto(background, foreground, where=mask)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM