opencv(c++)OpenCV添加(混合)两个图像
2017-11-05 10:17
369 查看
参考:
1、https://docs.opencv.org/3.2.0/
2、https://github.com/opencv/opencv/
vs2015 安装插件 image watch
工具–>扩展和更新–>联机 搜索 image watch 安装 重启
视图–>其他窗口–>image watch 打开该窗口
如何使用cv :: addWeighted添加两个图像
从我们之前的教程中,我们已经知道一些像素运算符。 一个有趣的二元(双输入)算子是线性混合算子:
通过从0→1改变α,这个操作符可以用来执行两个图像或视频之间的时间交叉消解,如在幻灯片和电影制作中所看到的(cool, eh?)
我们需要两个源图像(f0(x)和f1(x))。 所以,我们以通常的方式加载它们:
警告:
因为我们添加src1 src2,他们都有相同的大小(宽度和高度 通道数不要求一致)和类型。
2、现在我们需要生成g(x)图像。 为此,函数cv :: addWeighted非常方便:
因为cv :: addWeighted产生:
在这种情况下,gamma是0.0上面代码中的参数。
3、创建窗口,显示图像并等待用户结束程序。
1、https://docs.opencv.org/3.2.0/
2、https://github.com/opencv/opencv/
vs2015 安装插件 image watch
工具–>扩展和更新–>联机 搜索 image watch 安装 重启
视图–>其他窗口–>image watch 打开该窗口
Adding (blending) two images using OpenCV
什么是线性混合以及为什么它是有用的;如何使用cv :: addWeighted添加两个图像
Theory
下面的解释属于 Computer Vision: Algorithms and Applications从我们之前的教程中,我们已经知道一些像素运算符。 一个有趣的二元(双输入)算子是线性混合算子:
通过从0→1改变α,这个操作符可以用来执行两个图像或视频之间的时间交叉消解,如在幻灯片和电影制作中所看到的(cool, eh?)
源代码
从这里下载源代码。#include "opencv2/imgcodecs.hpp" #include "opencv2/highgui.hpp" #include <iostream> using namespace cv; int main(void) { double alpha = 0.5; double beta; double input; Mat src1, src2, dst; std::cout << " Simple Linear Blender " << std::endl; std::cout << "-----------------------" << std::endl; std::cout << "* Enter alpha [0-1]: "; std::cin >> input; // We use the alpha provided by the user if it is between 0 and 1 if (alpha >= 0 && alpha <= 1) { alpha = input; } src1 = imread("LinuxLogo.jpg"); src2 = imread("WindowsLogo.jpg"); if (src1.empty()) { std::cout << "Error loading src1" << std::endl; return -1; } if (src2.empty()) { std::cout << "Error loading src2" << std::endl; return -1; } beta = (1.0 - alpha); addWeighted(src1, alpha, src2, beta, 0.0, dst);//dst=src1*alpha+src2*beta+0.0 imshow("Linear Blend", dst); waitKey(0); return 0; }
说明
1、由于我们要执行:我们需要两个源图像(f0(x)和f1(x))。 所以,我们以通常的方式加载它们:
src1 = imread("../data/LinuxLogo.jpg"); src2 = imread("../data/WindowsLogo.jpg");
警告:
因为我们添加src1 src2,他们都有相同的大小(宽度和高度 通道数不要求一致)和类型。
2、现在我们需要生成g(x)图像。 为此,函数cv :: addWeighted非常方便:
beta = ( 1.0 - alpha ); addWeighted( src1, alpha, src2, beta, 0.0, dst);
因为cv :: addWeighted产生:
在这种情况下,gamma是0.0上面代码中的参数。
3、创建窗口,显示图像并等待用户结束程序。
imshow( "Linear Blend", dst ); waitKey(0);
相关文章推荐
- OpenCV3_C++_DrawText()在图像上添加文字水印 实例
- OpenCV图像处理教程C++(六)图像混合
- C/C++ OpenCV图像的线性混合
- OpenCV图像特征提取与检测C++(一) 概述、编译opencv并添加拓展模块opencv_contrib
- OpenCV图像处理教程C++(十)图像模糊--非线性滤波
- OpenCV图像处理教程C++(十八) 直方图均衡化、计算、比较、反向投影
- Android OpenCV添加图像效果
- OpenCV 初级图像混合
- C++图像辅助工具包Eigen入门代码学习(很好的配合Opencv)
- 利用OpenCV实现对于两个图像的对比
- opencv 学习之图像可调节线性混合
- C++ - opencv - 图像融合
- OpenCV特征点检测匹配图像-----添加包围盒
- OpenCV学习笔记(四):ROI区域图像叠加和图像线性混合
- opencv图像融合c++代码实例及运行结果
- OpenCV学习:使用OpenCV对两幅图像求和(求混合(blending))
- OpenCV3_C++_DetectConers()图像上角检测 实例
- Opencv 图像叠加 添加水印
- 【OpenCV入门教程之五】 分离颜色通道&多通道图像混合
- 【开发日记】C#调用C++图像处理算法(opencv)