創建滑動條:createTrackbar 函數
createTrackbar 函數用於創建一個可以調整數值的滑動條,並將滑動條附加在指定的窗口上。
int createTrackbar(const string& trackbar_name,const string& window_name,int* value,int count,TrackbarCallback onChange=0,void* userdata=0);
- trackbar_name,軌跡條的名字。
- window_name,窗口名字。
- value,滑塊位置,滑塊的初始位置為該變量的初始值。
- count,滑塊可以達到的最大位置,最小位置始終為 0。
- onChange,默認值為 0。這是一個指向回調函數的指針,每次滑塊位置改變,這個函數就會進行回調。函數原型必須為 void XXXX (int,void*); 如果回調是 NULL 指針,則表示沒有回調函數的調用,僅第三個參數 value 有變化。
- void* 類型的 userdata,默認值為 0。這個參數是用戶傳給回調函數的數據,用來處理軌跡條事件,可忽略。
示例程序:
//改變圖像的模糊度 //寫法 1:
#include<opencv.hpp>
using namespace cv; int main() { Mat src = imread("C:/Users/齊明洋/Desktop/1.jpg"); namedWindow("Control", WINDOW_AUTOSIZE); int sizes = 5; createTrackbar("Size", "Control", &sizes, 50); while (true) { Mat dst; blur(src, dst, Size(sizes, sizes)); imshow("Blur img", dst); imshow("Src img", src); char key = (char)waitKey(1); if (key == 27) { break; } } }
//寫法 2:
#include<opencv.hpp>
using namespace cv; int sizes = 5; VideoCapture cap; Mat src; void change_sizes(int, void*) { Mat dst; blur(src, dst, Size(sizes, sizes)); imshow("Blur img", dst); imshow("Src img", src); } int main() { src = imread("C:/Users/齊明洋/Desktop/1.jpg"); namedWindow("Control", WINDOW_AUTOSIZE); createTrackbar("Size", "Control", &sizes, 50,change_sizes); change_sizes(0, 0); waitKey(0); }
獲取當前軌跡條的位置:getTrackbarPos 函數
int getTrackbarPos(const string& trackbar_name,const string& window_name) ;
- const string& 類型的 trackbar_name,軌跡條的名字
- const string& 類型的 window_name,窗口名字