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

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

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

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

目标

在本教程中,您将学习

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

理论

注意
下面的解释来自Richard Szeliski撰写的书籍计算机视觉:算法与应用

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

\[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\) 。

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

结果