如何应用不是 cv2.THRESH_BINARY 掩码的掩码来覆盖带有 python-opencv 的原始图像?

How to apply the mask which is not a cv2.THRESH_BINARY mask to cover origin image with python-opencv?

蒙版边缘柔和,像这样:

在 photoshop 中使用此蒙版的结果是:

cv2.bitwise_and之后,结果太糟糕了!

我如何像 photoshop 一样处理这个,或者 python-opencv 中的任何其他方法都可以做到这一点?

谢谢!

如果你想要像photoshop中那样的透明效果,你需要使用alpha通道。参见

如果要将图像与另一个背景合成,可以使用 alpha 抠图公式 I = aF+(1-a)B,其中 a alpha,F 前景和 B 的背景。像这样:

ex_alpha = np.repeat(alpha[:, :, np.newaxis], 3, axis=2)
output = (foreground*ex_alpha) + (1-ex_alpha)*background

存在重复,因为 foreground/background 是 3 通道,而 alpha 是 1 通道。