http://blog.csdn.net/longzaitianya1989/article/details/8103822

cvAddWeighted 进行图片融合

2012-10-23 18:25 4418人阅读 评论(3) 收藏 举报
 分类:
opencv(49) 

版权声明:本文为博主原创文章,未经博主允许不得转载。

cvAddWeighted( ) 是opencv中,将两个图片矩阵进行融合的一个很好的函数,可以得到很多有趣的效果。

其函数原型如下:

void cvAddWeighted( const CvArr* src1, double alpha,const CvArr* src2, double beta,double gamma, CvArr* dst );
src1 
第一个原数组. 
alpha 
第一个数组元素的权值 
src2 
第二个原数组 
beta 
第二个数组元素的权值 
dst 
输出数组 
gamma 
添加的常数项。 
函数 cvAddWeighted 计算两数组的加权值的和:

dst(I)=src1(I)*alpha+src2(I)*beta+gamma
所有的数组必须的相同的类型相同的大小(或ROI大小)

注意:在这里src1,src2,以及dst,都必须是同样的图片类型,如:IPL_DEPTH_8U,在调用cvLoadImage( ) 时,打开方式也必须完全相同,这里1表示以三通道彩色图像方式输入,0表示以灰度图片格式输入,-1表示以原来图片的格式输入

看个例子:

  1. #include "stdafx.h"
  2. #include "cv.h"
  3. #include  "highgui.h"
  4. int main(int argc, char* argv[])
  5. {
  6. IplImage *src1,*src2;
  7. if(argc == 9 && (src1=cvLoadImage(argv[1],1))!=0 && (src2=cvLoadImage(argv[2],1))!=0)
  8. {
  9. IplImage *image=cvCreateImage(cvSize(275,313),IPL_DEPTH_8U,3);
  10. cvResize(src2,image);
  11. int x= atoi(argv[3]);
  12. int y= atoi(argv[4]);
  13. int width= atoi(argv[5]);
  14. int height= atoi(argv[6]);
  15. double alpha=(double)atof(argv[7]);
  16. double beta=(double)atof(argv[8]);
  17. cvSetImageROI(src1,cvRect(x,y,width,height));
  18. cvSetImageROI(image,cvRect(10,10,width,height));
  19. cvAddWeighted(src1,alpha,image,beta,0.0,src1);
  20. cvResetImageROI(src1);
  21. cvNamedWindow("Alpha_bend",1);
  22. cvShowImage("Alpha_bend",src1);
  23. cvWaitKey(0);
  24. cvReleaseImage(&src1);
  25. cvReleaseImage(&src2);
  26. cvDestroyWindow("Alpha_bend");
  27. }
  28. return 0;
  29. }

我的命令行参数是:cvAddWeighted.exe lena.jpg cat.jpg 235 221 115 156 0.8 0.2
当然这里还可以自己调整。

这里由于cat.jpg图片比较大,我先对他进行缩放,然后在和lena.jpg进行图片融合,当然融合的坐标点我实在ps里得到的。

最新文章

  1. 【图像处理】【SEED-VPM】4.串口调试信息
  2. Xcode开发openCV for iOS 时#include <list> not found
  3. org.apache.catalina.LifecycleException tomcat 启动 maven 处处都是坑!!!
  4. c语言自定义BOOL函数
  5. EF架构~关于多对多关系表无法更新与插入的问题
  6. iOS启动过程
  7. 【SQL】区分新来顾客和再访顾客
  8. Android Intent 用法全面总结
  9. ACM 中常用的算法有哪些? 2014-08-21 21:15 40人阅读 评论(0) 收藏
  10. 在SQL Server实现最短路径的搜索
  11. Erlang入门(五)——补遗
  12. js验证身份证格式
  13. TensorFlow-谷歌深度学习库 手把手教你如何使用谷歌深度学习云平台
  14. Linux之软链接与硬链接
  15. 洗礼灵魂,修炼python(89)-- 知识拾遗篇 —— 进程
  16. Java多线程(一) 什么是线程
  17. HDU - 1542 扫描线入门+线段树离散化
  18. iOS app启动流程
  19. git配置正确且权限已开但是pull或push提示无权限
  20. BZOJ4127Abs——树链剖分+线段树

热门文章

  1. Python 学习笔记15 类 - 继承
  2. tomcat安装分享
  3. python爬取企业登记业务
  4. 【接口工具】接口抓包工具之Charles
  5. C#Contains方法的错误理解
  6. JS的video在手机上有些手机能播放,而有些不能原因
  7. javaweb各种框架组合案例(五):springboot+mybatis+generator
  8. systemd:在service文件中给Exec传入多个参数
  9. git兼容svn与hg功能
  10. springboot全局字符编码设置