Mon*_*ino 5 python opencv image
如何叠加两个图像而不损失两个图像的颜色强度。
我有图像1和图像2:
我尝试使用 0.5 alpha 和 beta,但它给我的合并图像的颜色强度只有一半
dst = cv2.addWeighted(img1,0.5,img2,0.5,0)
Run Code Online (Sandbox Code Playgroud)
但是当我尝试对 alpha 和 beta 通道使用 1 时,它只提供合并区域。
dst = cv2.addWeighted(img1,1,img2,1,0)
Run Code Online (Sandbox Code Playgroud)
我必须得到如下所示的输出。
实际上dst是根据以下公式创建的:
dst = src1*alpha + src2*beta + gamma
Run Code Online (Sandbox Code Playgroud)
也就是说,当您将实际上是 3D 数组的图像与alpha您相乘时,您将所有项目相乘。例如,对于您拥有的蓝色像素[255, 0, 0]和白色像素[255, 255, 255],当您将矩阵相加在一起时,如果您希望结果为蓝色,您应该将白色像素转换为 0,这实际上是黑色(从物理学观点哈哈)。您可以简单地使用高级 numpy 索引找到白色像素,然后将它们转换为零。
import cv2
img1 = cv2.imread('img1.png')
img2 = cv2.imread('img2.png')
img1[img1[:, :, 1:].all(axis=-1)] = 0
img2[img2[:, :, 1:].all(axis=-1)] = 0
dst = cv2.addWeighted(img1, 1, img2, 1, 0)
cv2.imshow('sas', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)
结果:
| 归档时间: |
|
| 查看次数: |
25218 次 |
| 最近记录: |