【OpenCV】图像线性混合

来源:互联网 发布:软件体系结构设计 pdf 编辑:程序博客网 时间:2024/05/19 11:46

addWeighted()函数

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

dst = src1*alpha + src2*beta + gamma;

程序较简单,在此不赘述。


#include "opencv2/imgcodecs.hpp"#include "opencv2/highgui.hpp"#include <iostream>using namespace cv;using namespace std;int main(void){    double alpha = 0.5; double beta; double input;      // 默认缺省值为0.5    Mat src1, src2, dst;    cout << "Simple Linear Blender" << endl;    cout << "---------------------" << endl;    cout << "*Enter alpha [0.0-1.0]" << endl;    cin >> input;    if (input >= 0 && input <= 1)                       // 判断输入参数是否在区间[0,1]    {        alpha = input;    }    src1 = imread("../data/LinuxLogo.jpg");    src2 = imread("../data/WindowsLogo.jpg");    if (src1.empty()) { cout << "Error loading src1" << endl; return -1; }    if (src2.empty()) { cout << "Error loading src2" << endl; return -1; }    beta = (1.0 - alpha);    addWeighted(src1, alpha, src2, beta, 0.0, dst);      // dst = src1 * alpha + src2 * beta + 0.0    imshow("LinuxLogo", src1);    imshow("WindowsLogo", src2);    imshow("Linear Blend", dst);    waitKey(0);    return 0;}

运行结果

Simple Linear Blender---------------------*Enter alpha [0.0-1.0]0.4




原创粉丝点击