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)
Result
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)
可以看出图像相加相较于二值相加更加平滑。