dst
是根据以下公式创建的:dst = src1*alpha + src2*beta + gamma
这段话的意思是,当你使用alpha
乘以实际上是3D数组的图像时,你会将所有项目都乘以。例如,对于一个蓝色像素,你有[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()
结果:
dst = img1 + img2
在将白色设置为黑色后应该可以很好地运行,而且更容易/更短。 - Mikidst
中没有黑色了。它是蓝色、紫色和红色的,因为你混合了这些图像。 - Mazdak
BGR
中,purple(255, 0, 255) = blue(255, 0, 0) + red(0, 0, 255)
。 - Kinght 金