首页 > 其他 > 详细

OpenCV基础(三)---图像混合

时间:2019-04-06 15:58:33      阅读:135      评论:0      收藏:0      [点我收藏+]

图像混合

图像混合,产生的效果跨越了时间空间.

原理如下面公式,两张原始图像按权重相加,最终生成新图像.

技术分享图片

函数介绍:addWeighted() 

函数原型:void addWeighted(InputArray src1, double alpha, InputArray src2,

     double beta, double gamma, OutputArray dst, int dtype = -1);

函数功能:计算两个数组的加权和。

函数声明:

InputArray src1::加权的第一个数组

double alpha:第一个数组的权重

InputArray src2:加权的第二个数组

double beta:第二个数组的权重

double gamma:计算完权重和,再加上这个值,才是最后的结果

OutputArray dst:输出数组,与输入数组具有相同大小和通道数

int dtype = -1: 输出阵列的可选深度;当两个输入数组具有相同的深度时,使用dtype

       可以设置为-1,这将等效于src1.depth()

线性混合模式:

 1 #include <opencv2/opencv.hpp>
 2 #include <iostream>
 3 
 4 using namespace std;
 5 using namespace cv;
 6 
 7 int main(int argc, char** argv) {
 8 
 9     /*载入原图像*/
10     Mat src1, src2, dst;
11     src1 = imread("D:/shenjianxin.png");
12     src2 = imread("D:/xiaobai.png");
13     if (!src1.data ) {
14         cout << "could not load image1" << endl;
15         return false;
16     }
17     if (!src2.data) {
18         cout << "could not load image2" << endl;
19         return false;
20     }
21     imshow("shenjianxin", src1);
22     imshow("xiaobai", src2);
23     
24     /*图像融合*/
25     double alpha = 0.45;
26     if (src1.rows == src2.rows && src1.cols == src2.cols && src1.type() == src2.type()) {
27         addWeighted(src1, alpha, src2, (1.0 - alpha), 0.0, dst);
28     }
29     else {
30         cout << "could not blend photo" << endl;
31         return false;
32     }
33 
34     /*显示结果*/
35     namedWindow("blend demo", CV_WINDOW_AUTOSIZE);
36     imshow("blend demo", dst);
37 
38     waitKey(0);
39     return 0;
40 }

原始图

技术分享图片

技术分享图片

效果图

技术分享图片

 

 

 

 

    

OpenCV基础(三)---图像混合

原文:https://www.cnblogs.com/zmm1996/p/10661822.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!