C/C++ OpenCV滑动条的创建与使用
生活随笔
收集整理的這篇文章主要介紹了
C/C++ OpenCV滑动条的创建与使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
滑動條(Trackbar)是Opencv動態調節參數的一個工具,他依附于窗口存在
創建滑動條:createTrackbar()
int createTrackbar(
const string& trackbarname,
const string& winname,
int *value,
int count,
TrackbarCallback onCahnge=0,
void* userdata=0)
第一個參數:const string&類型的trackbarname,軌跡條的名字,用來代表我們創建的軌跡條
第二個參數:窗口名,表示這個軌跡條依附到哪個窗口上,即對應namedWindow()創建時窗口填的窗口名
第三個參數:int*類型的value,一個指向整形的指針,表示滑塊的位置,在創建時,滑塊的初始位置就是該變量的值。
第四個參數:int類型的count,表示滑塊可以到達的最大位置的值,滑塊最小位置的值始終是0
第五個參數:回調函數,這個函數必須是void XXX(int,void*)其中第一個參數是軌跡的位置,第二個參數是用戶數據。
第六個參數:void*類型的userdata,默認為0,這個參數是用戶傳遞給回調函數的數據,三國第三個使用全局變量的話,這個參數省略
下面是代碼:
#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;//響應滑動條的回調函數 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;//創建窗體namedWindow(WINDOW_NAME);//在創建窗體中創建一個滑動條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人脸识
- 下一篇: 二叉排序树的查找、插入