根据遮罩将2张图像添加在一起

时间:2019-01-11 18:36:57

标签: python opencv image-processing computer-vision

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

因此,如果一个像素位于蒙版的黑色区域中,则该像素与A中的同一像素相同。但是,如果一个像素位于蒙版的白色区域中,则所得像素应为像素的混合在A和B中。

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

1 个答案:

答案 0 :(得分:2)

尝试一下。您有2个图像以numpy数组的形式出现(形状=宽度,高度,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