(線性混合)創建滑動條:createTrackbar()


 

 1 #include<opencv2\opencv.hpp>
 2 #include<iostream>
 3 #include<vector>
 4 using namespace cv;
 5 using namespace std;
 6 
 7 #define WINDOW_NAME "【線性混合示例】"
 8 const int g_nMaxAlphaValue = 100;    //Alpha的最大值
 9 int g_nAlphaValueSlider;
10 double g_dAlphaValue;
11 double g_dBetaValue;
12 Mat g_srcImage1;
13 Mat g_srcImage2;
14 Mat g_dstImage;
15 
16 void on_Trackbar(int, void*) {
17     //求出當前alpha值相對於最大值的比例
18     g_dAlphaValue = (double)g_nAlphaValueSlider / g_nMaxAlphaValue;
19     //則beta值為1減去alpha值
20     g_dBetaValue = (1.0 - g_dAlphaValue);
21 
22     //根據alpha和beta值進行線性混合
23     addWeighted(g_srcImage1,g_dAlphaValue,g_srcImage2,g_dBetaValue,0.0,g_dstImage);
24 
25     //顯示效果圖
26     imshow(WINDOW_NAME,g_dstImage);
27 }
28 int main(int argc,char** argv) {
29     g_srcImage1 = imread("C:\\Users\\Nelsoner\\Desktop\\Camera Roll\\05.jpg");
30     g_srcImage2 = imread("C:\\Users\\Nelsoner\\Desktop\\Camera Roll\\08.jpg");
31 
32     if (!g_srcImage1.data) {
33         cout << "讀取第一幅圖片錯誤!" << endl;
34         return -1;
35     }
36     if (!g_srcImage2.data) {
37         cout << "讀取第二幅圖片錯誤!" << endl;
38         return -1;
39     }
40     //設置滑動條初值為70
41     g_nAlphaValueSlider = 70;
42 
43     namedWindow(WINDOW_NAME);
44 
45     //在創建的窗體中創建一個滑動條控件
46     char TrackbarName[50];
47     sprintf(TrackbarName,"透明值 %d",g_nMaxAlphaValue);
48 
49     createTrackbar(TrackbarName,WINDOW_NAME, &g_nAlphaValueSlider,g_nMaxAlphaValue,on_Trackbar);
50 
51     on_Trackbar(g_nAlphaValueSlider,0);
52 
53 
54     waitKey();
55     return 0;
56 }

效果圖:

 

獲取當前軌跡條的位置:getTrackbarPos();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM