OpenCV alpha(权因子) 融合举例

基于函数cv::addWeighted实现线性融合,目标公式如下:

g(x)=(1α)f0(x)+αf1(x)   公式(1)
其中 g(x)为目标(结果)图像, f0(x) f1(x) 为两个待融合图像。 α 的范围为 01

函数:

void cv::addWeighted ( InputArray  src1,double  alpha,InputArray  src2,double  beta,double gamma,OutputArray  dst,int  dtype = -1 )

完成的公式为:

             dst=αsrc1+βsrc2+γ      公式(2)

要完成目标公式公式(1),只需要公式(2)中gamma为0即可, β =1- α


代码如下:

#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;

int main( int argc, char** argv )
{
    double alpha = 0.5; 
    
    double beta; 
    double input;
    
    Mat src1, src2, dst;
    
    std::cout<<" Simple Linear Blender "<<std::endl;
    std::cout<<"-----------------------"<<std::endl;
    std::cout<<"* Enter alpha [0-1]: ";
    std::cin>>input;
    
    if( input >= 0.0 && input <= 1.0 )
    { 
        alpha = input; 
    }
    
    src1 = imread("LinuxLogo.jpg");
    src2 = imread("WindowsLogo.jpg");
    
    if( !src1.data ) 
    { 
        printf("Error loading src1 \n"); 
        return -1; 
    }
    if( !src2.data ) 
    { 
        printf("Error loading src2 \n"); 
        return -1; 
    }
    
    
    beta = ( 1.0 - alpha );
    addWeighted( src1, alpha, src2, beta, 0.0, dst);
    
    namedWindow("Linear Blend", 1);
    imshow( "Linear Blend", dst );
    waitKey(0);
    
    return 0;
}

原图

 


结果

OpenCV alpha(权因子) 融合举例_第1张图片

你可能感兴趣的:(OpenCV alpha(权因子) 融合举例)