使用OpenCV合成两张图片
来源:互联网 发布:硬盘播出系统 软件 编辑:程序博客网 时间:2024/05/08 04:37
目标:
在这个教程中你将会学到:
什么是线性混合以及为什么它有用;
怎么去使用addWeighted组合两张图片;
理论:
前面我们的教程中,我们已经了解了很多像素操作,一个有趣的二元操作就是线性柔合操作:
通过让阿尔法的值从0-1之间变化,这个操作可以被用来实现两张图像或视频之间的一种暂时的重叠效果。
代码:
和之前一样,先上代码:
//Adding two images using OpenCV//Author:York.//Email:y_zhou1991@163.com//Date:2016/3/1////////////////////////////////////////////#include<cv.h>#include<highgui.h>using namespace std;using namespace cv;int main(int argc, char** argv){double alpha = 0.5;double beta;double input;Mat src1, src2, dst;cout << "Simple Linear Blender " << endl;cout << "---------------------" << endl;cout << "*Enter alpha [0-1]: ";cin >> input;//根据自己设定的权重来柔和图像if (input >= 0.0&&input <= 1.0)alpha = input;//读入源图像src1 = imread("F:/Photo/OpenCV_Photo/baboon.jpg");src2 = imread("F:/Photo/OpenCV_Photo/lena.jpg");//判断源图像载入是否成功if (!src1.data){ cout << "Error loading src1\n"; return -1; }if (!src2.data){ cout << "Error loading src2\n"; return -1; }namedWindow("Linear Blend", 1);//进行图像柔和操作beta = (1.0 - alpha);addWeighted(src1, alpha, src2, beta, 0.0, dst);imshow("Linear Blend", dst);waitKey(0);return 0;}
解释:
1、 因为我们要实现下面这个公式:
所以我们需要两张原始图像,因此我们把他们分别载入;
注意:我们载入的两张原始图像,他们必须是同样的尺寸和类型(但似乎不是必须的,我自己载入的就是两张不一样的图片,照样可以)。
2、 现在我们需要产生输出图像,为了达到这个,addWeighted函数就可以排上用场了:
beta = ( 1.0- alpha );
addWeighted(src1, alpha, src2, beta, 0.0, dst);
addWeighted是根据下面这个公式工作的:
在这个程序中,伽马是0.
3、然后就是把柔和后的图像显示在窗口中了。最后效果如图:
0 0
- 使用OpenCV合成两张图片
- 两张图片合成
- 两张图片合成
- 两张图片的合成
- php 两张图片合成
- 两张(多张)图片合成一张图片
- OpenCV 合并两张图片
- 使用opencv查找两张图片不同的部分
- android 合成两张图片,上层图片设置透明度
- IOS两张图片合成为一张图片
- java合成两张图片并在图片上写字
- IOS两张图片合成为一张图片
- php imagick 扩展合成图片的两张方法
- iOS代码实现两张图片合成一个
- iOS代码实现两张图片合成一个
- 学习opencv 混合两张图片
- OpenCV两张图片的合并
- Python+Opencv识别两张相似图片
- bzoj3091
- STD中string的常用方法总结
- edittext
- android适配
- Nginx 之 Location基础配置 及 Location最佳实践
- 使用OpenCV合成两张图片
- myeclipse10 init文件
- 移动互联网金融技术经理成长记
- fiddler解析ssl
- 控件的动态创建-MFC方式
- 多线程之关键段(临界区)
- marathon-autoscaling功能研究
- Eclipse 下mahout的配置与使用
- Quartz与Spring的整合-Quartz中的job如何自动注入spring容器托管的对象