OpenCV Python - 图像相加


当通过 imread() 函数读取图像时,生成的图像对象实际上是二维或三维矩阵,具体取决于图像是灰度图像还是 RGB 图像。

因此,cv2.add()函数将两个图像矩阵相加并返回另一个图像矩阵。

例子

以下代码读取两个图像并执行它们的二进制加法 -

kalam = cv2.imread('kalam.jpg')
einst = cv2.imread('einstein.jpg')
img = cv2.add(kalam, einst)
cv2.imshow('addition', img)

结果

图像添加

OpenCV 有一个addWeighted()函数,而不是线性二进制加法,它执行两个数组的加权和。其命令如下

Cv2.addWeighted(src1, alpha, src2, beta, gamma)

参数

addWeighted()函数的参数如下 -

  • src1 - 第一个输入数组。
  • alpha - 第一个数组元素的权重。
  • src2 - 第二个输入数组的大小和通道数与第一个相同
  • beta - 第二个数组元素的权重。
  • gamma - 添加到每个总和的标量。

该函数按照以下等式添加图像 -

$$\mathrm{g(x)=(1-\alpha)f_{0}(x)+\alpha f_{1}(x)}$$

利用上例得到的图像矩阵进行加权求和。

通过改变 a 从 0 -> 1,可以从一幅图像平滑过渡到另一幅图像,从而使它们混合在一起。

第一个图像的权重为 0.3,第二个图像的权重为 0.7。伽玛因子取0。

addWeighted()函数的命令如下 -

img = cv2.addWeighted(kalam, 0.3, einst, 0.7, 0)

可以看出,图像相加相比二值相加更加平滑。

伽马因子