python - 根据蒙版将 2 张图像加在一起

标签 python opencv image-processing computer-vision

假设我有图像 A、B 和 M。目标是将图像 A 作为背景,然后将图像 B 与图像 A 混合,但仅在蒙版 M 的区域混合。

因此,如果像素位于掩码的黑色区域,则该像素与 A 中的同一像素相同。但如果像素位于掩码的白色区域,则生成的像素应该是像素的混合在 A 和 B 中。

OpenCV 是否有实现此目的的方法?

最佳答案

试试这个。您有 2 张 numpy 数组形式的图像 (shape = width,height,3)。你只找到那些不是黑色的像素 ([0,0,0]) - 你得到索引(带索引的数组)并只弯曲那些像素。

#bcg - background
#mask - mask
#indice - indexes of pixels that are not black

indice =np.where(np.any(mask!=0, axis=2))
bcg.setflags(write=True) # maybe not needed, but sometimes array is write-blocked
bcg[indice]=mask[indice]+bcg[indice] # or (mask[indice]+bcg[indice])/2 - depends on your bending algorithm

关于python - 根据蒙版将 2 张图像加在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54152225/

相关文章:

Python在父类中使用派生类的方法?

ios - 获取某人脸部的真实大小

c++ - 如何在 OpenCV 中处理 vector (数学)

opencv - 不能使用 copyTo 将矩形矩阵复制到 3D 矩阵

image - 文字为图和图形为图的区别

java - 使用java和opencv对灰度图像进行图像融合给出了奇怪的结果

python - 分配 'default' 值时检查非顺序列表索引是否存在

python - 在 python 中使用正则表达式拆分带括号的字符串

python - 如何创建包含数字范围的矩阵?

iphone - 如何对 CVImageBufferRef 视频帧进行操作