OpenCV3---addWeighted的图像混合

cv::addWeightedcv::add类似而cv::addWeighted可以选择权重
下面看看cv::addWeighted的原型

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

src1:一组输入数组(图像)
alpha:第一个数组元素的权值
src2:第二组输入数组(图像)
beta:第二个数组元素的权重
gamma:灰度系数,值越大图像越白

效果展示:

代码:

    cv::Mat str1 = cv::imread("C:\\Users\\chuan\\Desktop\\picture\\22.jpg");
    cv::Mat str2 = cv::imread("C:\\Users\\chuan\\Desktop\\picture\\33.jpg");
    cv::namedWindow("test",cv::WINDOW_AUTOSIZE);
    int alpha = 0;
    int beta = 0;
    int gamma = 0;
    cv::createTrackbar("alpha","test",&alpha,100);
    cv::createTrackbar("beta","test",&beta,100);
    cv::createTrackbar("gamma","test",&gamma,255);

    for(;;)
    {
        cv::Mat tmp3;
        cv::Mat tmp1(str1, cv::Rect(0,0,640,480));
        cv::Mat tmp2(str2, cv::Rect(0,0,640,480));

        cv::addWeighted(tmp1, alpha/100.0f, tmp2, beta/100.0f, gamma, tmp3);
        cv::imshow("test",tmp3);

        if(cv::waitKey(100)==27)
            break;
    }

你可能感兴趣的:(OpenCV,opencv)