📜  python opencv 基础 4: addWeighted() 融合两张图像

📅  最后修改于: 2020-08-28 01:03:01             🧑  作者: Mango

在利用opencv进行图像处理的过程中,很多时候需要对两张图像混合,或者为其中一张图像加上一个LOGO等操作。

在opencv中的addWeight函数提供了很好的处理方法:

addWeighted()

dst = cv2.addWeighted(src1, alpha, src2, beta, gamma,dst,dtype)

其中src1src2是输入图像数组,而alphabeta是执行加权加法时要考虑的相应权重。gamma是静态权重,将被添加到图像的所有像素中

dstdtype默认值未None

addWeighted()函数返回包含结果图像像素值的numpy数组, 其原理可以由如下公式描述:

dst = scr1*alpha + scr2*beta + gamma

示例1:使用addWeighted融合两个图像

我们将拍摄两张图像,并将它们的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:

  

混合后的结果:

示例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)

结果如下:

在改变权重后,混合后的效果也发生了明显的变化

扩展问题:

如果是两个图像的分辨率(尺寸)不一致那应该如何处理呢?在此我大概有两个方向:

  • Resize图像到一致的尺寸进行融合
  • 制定一个ROI,在ROI内进行融合

 

 

—–>>>>>