C/C++ OpenCV滑动条的创建与使用
滑動條(Trackbar)是Opencv動態(tài)調節(jié)參數(shù)的一個工具,他依附于窗口存在
創(chuàng)建滑動條:createTrackbar()
int createTrackbar(
const string& trackbarname,
const string& winname,
int *value,
int count,
TrackbarCallback onCahnge=0,
void* userdata=0)
第一個參數(shù):const string&類型的trackbarname,軌跡條的名字,用來代表我們創(chuàng)建的軌跡條
第二個參數(shù):窗口名,表示這個軌跡條依附到哪個窗口上,即對應namedWindow()創(chuàng)建時窗口填的窗口名
第三個參數(shù):int*類型的value,一個指向整形的指針,表示滑塊的位置,在創(chuàng)建時,滑塊的初始位置就是該變量的值。
第四個參數(shù):int類型的count,表示滑塊可以到達的最大位置的值,滑塊最小位置的值始終是0
第五個參數(shù):回調函數(shù),這個函數(shù)必須是void XXX(int,void*)其中第一個參數(shù)是軌跡的位置,第二個參數(shù)是用戶數(shù)據(jù)。
第六個參數(shù):void*類型的userdata,默認為0,這個參數(shù)是用戶傳遞給回調函數(shù)的數(shù)據(jù),三國第三個使用全局變量的話,這個參數(shù)省略
下面是代碼:
#include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp> using namespace cv;#define WINDOW_NAME "線性混合"//變量聲明 const int g_nMaxAlphaValue = 100; //Alpha的最大值 int g_nAlphaValuesSlider; //滑動條對應的變量 double g_dAlpaValue; double g_dBetaValue;//聲明存儲圖像的變量 Mat g_srcImage1; Mat g_srcImage2; Mat g_dstImage;//響應滑動條的回調函數(shù) void on_Trackbar(int, void *) {//求出當前alpha值對于最大值的比例g_dAlpaValue = (double)g_nAlphaValuesSlider / g_nMaxAlphaValue;//求出第二張圖片的權重g_dBetaValue = (1.0 - g_dAlpaValue);//線性混合addWeighted(g_srcImage1, g_dAlpaValue, g_srcImage2, g_dBetaValue, 0.0, g_dstImage);//顯示效果圖imshow(WINDOW_NAME, g_dstImage); }int main() {g_srcImage1 = imread("1.jpg");g_srcImage2 = imread("2.jpg");if (!g_srcImage1.data){printf("第一張讀取失敗\n");return -1;}if (!g_srcImage2.data){printf("第二張讀取失敗\n");return -1;}//設置滑動條的初始位置g_nAlphaValuesSlider = 50;//創(chuàng)建窗體namedWindow(WINDOW_NAME);//在創(chuàng)建窗體中創(chuàng)建一個滑動條char TranckbarName[50] = "透明值100";createTrackbar(TranckbarName, WINDOW_NAME, &g_nAlphaValuesSlider, g_nMaxAlphaValue, on_Trackbar);on_Trackbar(g_nAlphaValuesSlider, 0);waitKey();return 0; }文件目錄:
運行結果:
總結
以上是生活随笔為你收集整理的C/C++ OpenCV滑动条的创建与使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt5.7+Opencv2.4.9人脸识
- 下一篇: C/C++ OpenCV图像的线性混合