OpenCV 4.12.0
开源计算机视觉
加载中...
搜索中...
无匹配项
使用 OpenCV 添加(混合)两张图像

上一个教程: 图像操作
下一个教程: 改变图像的对比度和亮度!

原始作者Ana Huamán
兼容性OpenCV >= 3.0

我们将学习如何混合两张图像!

目标

在本教程中,您将学习

  • 什么是线性混合以及它的用途;
  • 如何使用 addWeighted() 添加两张图像

理论

注意
以下解释来自 Richard Szeliski 的 Computer Vision: Algorithms and Applications 这本书

从我们之前的教程中,我们已经了解了一些像素运算符。一个有趣的二元(双输入)运算符是线性混合运算符

\[g(x) = (1 - \alpha)f_{0}(x) + \alpha f_{1}(x)\]

通过将 \(\alpha\) 从 \(0 \rightarrow 1\) 变化,这个运算符可以用于在两个图像或视频之间执行时间上的交叉溶解,就像在幻灯片和电影制作中看到的那样(很酷,不是吗?)

源代码

解释

由于我们将要执行

\[g(x) = (1 - \alpha)f_{0}(x) + \alpha f_{1}(x)\]

我们需要两个源图像( \(f_{0}(x)\) 和 \(f_{1}(x)\))。所以,我们以通常的方式加载它们

我们使用了以下图像: LinuxLogo.jpgWindowsLogo.jpg

警告
由于我们正在添加 src1src2,它们都必须具有相同的大小(宽度和高度)和类型。

现在我们需要生成 g(x) 图像。为此,addWeighted() 函数非常方便

因为 addWeighted() 产生

\[dst = \alpha \cdot src1 + \beta \cdot src2 + \gamma\]

在这种情况下,gamma 是上面代码中的参数 \(0.0\)。

创建窗口,显示图像并等待用户结束程序。

结果