如何在不丢失两幅图像颜色强度的情况下叠加两幅图像。
我有Image1和Image2:
答案 0 :(得分:2)
实际上dst
是根据以下公式创建的:
dst = src1*alpha + src2*beta + gamma
其中说当你将实际上是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()
结果: