OpenCV  4.10.0
开源计算机视觉
正在加载...
正在搜索...
无匹配项
使用 OpenCV 叠加(混合)两张图像

上一教程: Using images
下一教程: Changing the contrast and brightness of an image!

作者(原版)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\)。

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

结果