【Open CV基

在Open CV的图像操作中,我们可以通过cvAddWeighted函数实现两张图片的融合,函数完整签名为:

void cvAddWeighted(const CvArr* src1,double alpha,const CvArr* src2,double beta,double gamma,CvArr* dst );

参数 意义

src1 第一张图片

alpha 融合时的第一张图片参数

src2 第二种图片

beta 融合时的第二种图片参数

gamma 常数项,,往往取决于像素要调整到的平均值和最大值

dst 融合后的图片

此函数的功能就是加权融合图像,每个像素点的像素是两种源图片的对应像素点的像素加权算出来的,融合公式如下:

dst = alpha*src1 + beta*src2 + gamma 当alpha为a,beta为1-a,gamma为0,其中,a>=0且a<=1时,融合方程被称为标准融合方程。

下面是示例:

main(){//待融合的两张图片名char* imgStr1 = “faceScene.jpg”;char* imgStr2 = “fruits.jpg”;//打开两张图片IplImage* img1 = cvLoadImage(imgStr1);IplImage* img2 = cvLoadImage(imgStr2);alpha = 0.3;float beta = 0.7;float gamma = 0;//创建一张图片来接收融合的图片IplImage* dst = cvCreateImage(cvSize(img1->width, img1->height),img1->depth,3);//使用cvAddWeighted执行Alpha融合 cvAddWeighted(img1, alpha, img2, beta, gamma, dst);//输出三张图片查看效果char* s1 = “img1”, *s2 = “img2”, *s3 = “dst”;cvNamedWindow(s1); cvNamedWindow(s2); cvNamedWindow(s3);cvShowImage(s1, img1); cvShowImage(s2, img2); cvShowImage(s3, dst);cvWaitKey(0);cvReleaseImage(&img1);cvReleaseImage(&img2);cvReleaseImage(&dst);cvDestroyWindow(s1); cvDestroyWindow(s2); cvDestroyWindow(s3);}效果图

待融合图片1:

待融合图片2:

融合成功后的图片:

人生有一半掌握在上帝那里,另一半攥在自己的手中。

【Open CV基

相关文章:

你感兴趣的文章:

标签云: