cvAddWeighted( ) (转载)

 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表示以原来图片的格式输入

 

看个例子:

 

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

 

 

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

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值