如何在Python OpenCV中的其他图像上覆盖图片

时间:2019-03-04 11:11:25

标签: python opencv

我有一张这样的图片,我想通过在图像上方添加一层来删除背景,就像photoshop布局的工作原理一样。

原始图片 enter image description here

面膜/层 enter image description here

最终期望输出 enter image description here

我正在尝试通过opencv的addweighed函数执行此操作,但是我无法获得所需的输出

im_overlay = cv2.imread('%s/%s.png'%(_src,camera_name.split(".")[0]))
img = cv2.addWeighted(im, 1, im_overlay, 0.0, 0)
showImage(img)

1 个答案:

答案 0 :(得分:1)

对于OpenCv来说,掩码格式很奇怪,无法在我的系统上读取(使用opencv 3.4.2)。我可以使用cv2.IMREAD_UNCHANGED读取它,但它向我显示您的遮罩有4个频道(我原本只希望有一个频道)。下面的代码产生相反的结果或您期望的结果:

 img = cv2.imread(r"C:\Users\...\Desktop\\W1kle.jpg")
 mask = cv2.imread(r"C:\Users\...\Desktop\LZdyB.png",cv2.IMREAD_UNCHANGED) 
 mask = mask[:,:,3]
 res = cv2.bitwise_and(img,img,mask=mask)
 cv2.imshow("image",res)
 cv2.waitKey(0)

希望这对您有帮助:)