opencv官方示例-图像线性混合AddingImages

opencv官方示例-图像线性混合


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/**

* @file AddingImages.cpp

* @brief Simple linear blender ( dst = alpha*src1 + beta*src2 )

* @author OpenCV team

*/

//

/**

* 叠加图像的.cpp文件

* 简单的线性混合,混合公式 dst = alpha*src1 + beta*src2

*/

//头文件

#include "opencv2/imgcodecs.hpp" // Image file reading and writing ,图片加载和写出操作相关

#include "opencv2/highgui.hpp" // High-level GUI, GUI图形界面相关

#include <iostream>

//命名空间

using namespace cv;

using namespace std;

/**

* @function main

* @brief Main function

*/

/**

* 程序流程

* 1、图像、公式系数参数的声明和初始化,输入参数

* 2、加载图片,检查图片是否加载成功

* 3、调用addWeighted()函数

* 4、显示线性混合结果

*/

//主函数

int main( void )

{

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
  //声明和初始化混合公式 dst = alpha*src1 +  beta*src2 中的两个系数

double alpha = 0.5; double beta; double input;

//图像容器变量

Mat src1, src2, dst;

/// Ask the user enter alpha

// 输入系数alpha

cout << " Simple Linear Blender " << endl;

cout << "-----------------------" << endl;

cout << "* Enter alpha [0.0-1.0]: ";

cin >> input;

// We use the alpha provided by the user if it is between 0 and 1

// 系数限定在0-1之间

if( input >= 0 && input <= 1 )

{ alpha = input; }

//![load]

/// Read images ( both have to be of the same size and type )

// 加载两副待混合的原图

src1 = imread( "../data/LinuxLogo.jpg" );

src2 = imread( "../data/WindowsLogo.jpg" );

//![load]

//检查图片是否成功加载

if( src1.empty() ) { cout << "Error loading src1" << endl; return -1; }

if( src2.empty() ) { cout << "Error loading src2" << endl; return -1; }

//![blend_images]

// 由alpha计算beta, 两者关系限定为 beta = ( 1.0 - alpha )

beta = ( 1.0 - alpha );

//调用addWeighted()函数进行线性混合操作, gamma 参数区0.0

addWeighted( src1, alpha, src2, beta, 0.0, dst);

//![blend_images]

//![display]

//显示混合结果

imshow( "Linear Blend", dst );

waitKey(0);

//![display]

return 0;

}

/**

* 要点总结

* 线性混合公式 dst = alpha*src1 + beta*src2

* 混合公式两个系数取值限定在[0,1], 两者关系为beta = ( 1.0 - alpha )

* gamma参数不取零混合公式就变为 dst = alpha*src1 + beta*src2 + gamma

* 调用示例addWeighted( src1, alpha, src2, beta, 0.0, dst);

*/
-------------本文结束感谢您的阅读-------------