目标
在本教程中,您将学习:
- 什么是线性混合以及为什么它有用;
- 如何使用 addWeighted() 添加两个图像
理论
-
注意
下面的解释属于Richard Szeliski的《计算机视觉:算法和应用》一书
从我们之前的教程中,我们已经知道了一些像素运算符。一个有趣的二元(双输入)算子是线性混合算子:
[g(x) = (1 - \alpha)f_{0}(x) + \alpha f_{1}(x)]
通过改变 \(\alpha\) 从 \(0 \rightarrow 1\) 开始,此运算符可用于在两个图像或视频之间执行时间交叉融合,如幻灯片放映和电影制作中所示(很酷,嗯?
源代码 C++爪哇岛蟒
从此处下载源代码。
#include“opencv2/imgcodecs.hpp”
#include“opencv2/highgui.hpp”
#include < iostream>
使用命名空间 CV;
我们在这里不是“使用命名空间 std”,以避免 c++17 中 beta 变量和 std::beta 之间的冲突
使用 std::cin;
使用 std::cout;
使用 std::endl;
int main( 无效 )
{
双阿尔法 = 0.5;双贝塔;双输入;
垫子 src1, src2, dst;
cout << “Simple Linear Blender” << endl;
cout << “-----------------------” << endl;
cout << “* 输入 alpha [0.0-1.0]: ”;
cin >>输入;
如果 alpha 介于 0 和 1 之间,我们使用用户提供的 alpha
if( 输入 >= 0 && 输入 <= 1 )
{ alpha = 输入;
src1 = imread( samples::findFile(“LinuxLogo.jpg”) );
src2 = imread( samples::findFile(“WindowsLogo.jpg”) );
if( src1.empty() ) { cout << “加载 src1 时出错” << endl;返回EXIT_FAILURE;}
if( src2.empty() ) { cout << “加载 src2 时出错” << endl;返回EXIT_FAILURE;}
贝塔 = ( 1.0 - 阿尔法 );
addWeighted( src1, alpha, src2, beta, 0.0, dst);
imshow( “线性混合”, dst );
waitKey(0);
返回 0;
}
解释 C++爪哇岛蟒
由于我们将要执行:
[g(x) = (1 - \alpha)f_{0}(x) + \alpha f_{1}(x)]
我们需要两个源图像(\(f_{0}(x)\)和\(f_{1}(x)\))。因此,我们以通常的方式加载它们:
src1 = imread( samples::findFile(“LinuxLogo.jpg”) );
src2 = imread( samples::findFile(“WindowsLogo.jpg”) );
我们使用了以下图像:LinuxLogo.jpg和WindowsLogo.jpg
-
警告
由于我们要添加 src1 和 src2,因此它们的大小(宽度和高度)和类型必须相同。
现在我们需要生成图像。为此,函数 addWeighted() 非常方便:g(x)
贝塔 = ( 1.0 - 阿尔法 );
addWeighted( src1, alpha, src2, beta, 0.0, dst);
因为 addWeighted() 产生:
dst=α⋅src1+β⋅src2+γ
在本例中,是上述代码中的参数 0.0。gamma
0.0
创建窗口,显示图像并等待用户结束程序。
imshow( “线性混合”, dst );
waitKey(0);
结果
在线教程
- 麻省理工学院人工智能视频教程 – 麻省理工人工智能课程
- 人工智能入门 – 人工智能基础学习。Peter Norvig举办的课程
- EdX 人工智能 – 此课程讲授人工智能计算机系统设计的基本概念和技术。
- 人工智能中的计划 – 计划是人工智能系统的基础部分之一。在这个课程中,你将会学习到让机器人执行一系列动作所需要的基本算法。
- 机器人人工智能 – 这个课程将会教授你实现人工智能的基本方法,包括:概率推算,计划和搜索,本地化,跟踪和控制,全部都是围绕有关机器人设计。
- 机器学习 – 有指导和无指导情况下的基本机器学习算法
- 机器学习中的神经网络 – 智能神经网络上的算法和实践经验
-
斯坦福统计学习
有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
人工智能书籍
- OpenCV(中文版).(布拉德斯基等)
- OpenCV+3计算机视觉++Python语言实现+第二版
- OpenCV3编程入门 毛星云编著
- 数字图像处理_第三版
- 人工智能:一种现代的方法
- 深度学习面试宝典
- 深度学习之PyTorch物体检测实战
- 吴恩达DeepLearning.ai中文版笔记
- 计算机视觉中的多视图几何
- PyTorch-官方推荐教程-英文版
- 《神经网络与深度学习》(邱锡鹏-20191121)
- …
第一阶段:零基础入门(3-6个月)
新手应首先通过少而精的学习,看到全景图,建立大局观。 通过完成小实验,建立信心,才能避免“从入门到放弃”的尴尬。因此,第一阶段只推荐4本最必要的书(而且这些书到了第二、三阶段也能继续用),入门以后,在后续学习中再“哪里不会补哪里”即可。
第二阶段:基础进阶(3-6个月)
熟读《机器学习算法的数学解析与Python实现》并动手实践后,你已经对机器学习有了基本的了解,不再是小白了。这时可以开始触类旁通,学习热门技术,加强实践水平。在深入学习的同时,也可以探索自己感兴趣的方向,为求职面试打好基础。
第三阶段:工作应用
这一阶段你已经不再需要引导,只需要一些推荐书目。如果你从入门时就确认了未来的工作方向,可以在第二阶段就提前阅读相关入门书籍(对应“商业落地五大方向”中的前两本),然后再“哪里不会补哪里”。
有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
文章来源:https://www.toymoban.com/news/detail-829811.html
文章来源地址https://www.toymoban.com/news/detail-829811.html
到了这里,关于使用 OpenCV 添加(混合)两个图像的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!