滾動條(Trackbar)是OpenCV動態調節參數特別好用的一種工具,它依附於窗口而存在。createTrackbar()函數用來創建一個可調整數值的附加在窗口上的滾動條!
創建滾動條的createTrackbar()在實例中的應用如下:
#include <iostream>
#include <vector>
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;
double sliderValue;//滾動條對應變量
const int Maxsilder = 100;
int Sildermark;//滾動條對應變量
#define WINDOW "線性混合示例" //窗口標題定義宏
Mat Image1;
Mat Image2;
Mat mixImage;
void on_Trackbar(int, void*)
{
double betaValue;
sliderValue = (double)Sildermark / Maxsilder;
betaValue = (1.0 - sliderValue);
addWeighted(Image1, sliderValue, Image2, betaValue, 0.0, mixImage);//將1,2圖線性混合,存儲在mixImage
imshow(WINDOW, mixImage);
}
int main(int argc, char** argv)
{
Image1 = imread("C:\\Desktop\\11.jpg");
Image2 = imread("C:\\Desktop\\22.jpg");
if (!Image1.data)
{
printf("讀取第一幅圖有誤,請確定圖片路徑!\n");
return -1;
}
if (!Image2.data)
{
printf("讀取第二幅圖有誤,請確定圖片路徑!\n");
return -1;
}
Sildermark = 70;//滾動條初始值爲70
namedWindow(WINDOW, 1);//創建窗口
char TrackbarName[50];//窗口中的滑動條控件
sprintf(TrackbarName, "透明值 %d", Maxsilder);
createTrackbar(TrackbarName, WINDOW, &Sildermark, Maxsilder, on_Trackbar);
on_Trackbar(Sildermark, 0);
waitKey(0);
return 0;
}
編譯運行後,原圖以及混合所得的運行圖片: