zoukankan      html  css  js  c++  java
  • cvAddWeighted 进行图片融合

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

    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里得到的。

     

    delphi lazarus opengl 网页操作自动化, 图像分析破解,游戏开发
  • 相关阅读:
    Codeforces Round #311 (Div. 2)
    hdu5441 并查集+克鲁斯卡尔算法
    hdu5439 二分
    hdu5422 最大表示法+KMP
    hdu3374 最大最小表示法 +kmp
    hdu2609最小表示法
    hdu4870 高斯消元
    关于并发编程是使用synchronized,lock?
    关于项目中遇到的问题-- trycatch 手动回滚事务
    关于项目中遇到的问题-- 请求接收的参数发生改变情况
  • 原文地址:https://www.cnblogs.com/delphi-xe5/p/5820285.html
Copyright © 2011-2022 走看看