??????? 在調試程序或者程序執行時需要調整某個變量的值亦或是參數的值,我們需要一個簡單方便的操作,滾動條就是一個非常使用的工具。通過鼠標點擊對滾動條進行拖動操作以期實現調整某個參數的值。下面例程參見Opencv 安裝目錄 samples tutorial_code文件夾。
#include"opencv2/opencv.hpp"
using namespace cv;
using namespace std;const int alpha_slider_max = 100;
int alpha_slider;
double alpha;
double beta;//存儲矩陣
Mat src1, src2, dst;void on_tracker(int, void*);
int main(int argc, char* argv[])
{src1 = imread("C:/Users/lyb/Documents/Visual Studio 2013/Projects/ConsoleApplication trackbar/Debug/1.jpg");src2 = imread("C:/Users/lyb/Documents/Visual Studio 2013/Projects/ConsoleApplication trackbar/Debug/2.jpg");if (!src1.data){ cout << "Error loading src1" << endl; return -1; } //判斷載入是否成功if (!src2.data){ cout << "Error loading src2" << endl; return -1; }alpha_slider = 0;namedWindow("Linear_blend");//namedWindow("control_image");//建立滑塊char TrackbarName[50];sprintf(TrackbarName, "Alpha x %d", alpha_slider_max);//標準寫入字符串createTrackbar(TrackbarName, "Linear_blend", &alpha_slider, alpha_slider_max, on_tracker);//參數1滑塊名稱 參數2顯示窗口 參數3 OPENCV將當前滑塊位置值傳給指針指向的整數 參數4滑塊調整范圍最大值 參數5指向回調函數的指針,當滑動條被拖動時,函數自動調用on_tracker(alpha_slider, 0);waitKey(0);return 0;}void on_tracker(int, void*) //滑塊所對應的操作函數 對圖像進行線性混合
{alpha = (double)alpha_slider / alpha_slider_max;beta = (1.0 - alpha);addWeighted(src1, alpha, src2, beta, 0.0, dst);/*cvAddWeighted 計算兩數組的加權值的和: dst(I) = src1(I)*alpha + src2(I)*beta + gamma cvAddWeighted( const CvArr* src1, double alpha, const CvArr* src2, double beta, double gamma, CvArr* dst );src1 //第一個原數組.alpha //第一個數組元素的權值src2 //第二個原數組beta //第二個數組元素的權值gamma //添加的常數項。dst //輸出數組*/imshow("Linear_blend", dst);
}