📅  最后修改于: 2020-08-28 01:03:01             🧑  作者: Mango
在利用opencv进行图像处理的过程中,很多时候需要对两张图像混合,或者为其中一张图像加上一个LOGO等操作。
在opencv中的addWeight函数提供了很好的处理方法:
dst = cv2.addWeighted(src1, alpha, src2, beta, gamma,dst,dtype)
其中src1和src2是输入图像数组,而alpha,beta是执行加权加法时要考虑的相应权重。gamma是静态权重,将被添加到图像的所有像素中
dst和dtype默认值未None
addWeighted()函数返回包含结果图像像素值的numpy数组, 其原理可以由如下公式描述:
dst = scr1*alpha + scr2*beta + gamma
我们将拍摄两张图像,并将它们的alpha和beta值相加0.5进行混合:
import cv2 # read two images src1 = cv2.imread('./image1.png', cv2.IMREAD_COLOR) src2 = cv2.imread('./image2.png', cv2.IMREAD_COLOR) # add or blend the images dst = cv2.addWeighted(src1, 0.5, src2, 0.5, 0.0) # save the output image cv2.imwrite('./image.png', dst)
原图1和原图2:
混合后的结果:
我们将使用与先前示例相同的输入图像,但是权重不同。alpha=1
,beta=1
import cv2 # read two images src1 = cv2.imread('./image1.png', cv2.IMREAD_COLOR) src2 = cv2.imread('./image2.png', cv2.IMREAD_COLOR) # add or blend the images dst = cv2.addWeighted(src1, 1, src2, 1, 0.0) # save the output image cv2.imwrite('./image.png', dst)
结果如下:
在改变权重后,混合后的效果也发生了明显的变化
如果是两个图像的分辨率(尺寸)不一致那应该如何处理呢?在此我大概有两个方向:
—–>>>>>