opencv滑动条的创建与使用

来源:互联网 发布:jenkins 远程windows 编辑:程序博客网 时间:2024/06/04 20:11

opencv滑动条的创建与使用

利用createTrackbar()函数

  • 函数参数
  • `int createTrackbar(const string& trackbarname, const string& winname,
    int* value, int count,
    TrackbarCallback onChange = 0,
    void* userdata = 0);

  • 第一个参数,轨迹条的名字,用来代表我们创建的轨迹条。

  • 第二个参数,窗口的名字,表示轨迹条会依附在哪个窗口上。
  • 第三个参数,表示滑块的位置。
  • 第四个参数,表示滑块可以达到的最大位置的值。
  • 第五个参数,是指向回调函数的指针。
  • 第六个参数,用户传给回调函数的数据,默认值为0,假如第三个参数是全局变量则可不用管。
#include<opencv2/opencv.hpp>  #include<opencv2/core/core.hpp>  #include<opencv2/highgui/highgui.hpp>  using namespace cv;// 为窗口定义的宏  #define WINDOW_NAME "[线性混合示例]"  // Alpha值得最大值  const int g_nMaxAlphaValue = 100;// 滑动条对应的变量  int g_nAlphaValueSlider;double g_dAlphaValue;double g_dbetaValue;// 声明存储图像的变量  Mat g_srcImage1;Mat g_srcImage2;Mat g_dstImage;void on_Trackbar(int, void*) {    // 求出当前Alpha值得相对最大值的比例      g_dAlphaValue = (double)g_nAlphaValueSlider / g_nMaxAlphaValue;    // beta值为1-alpha      g_dbetaValue = (1.0 - g_dAlphaValue);    // alpha和beta进行线性混合      addWeighted(g_srcImage1, g_dAlphaValue, 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("can't read image");    }    if (!g_srcImage2.data) {        printf("can't read image");    }    // 设置滑动条的初始值70      g_nAlphaValueSlider = 70;    // 创建窗体      namedWindow(WINDOW_NAME, 1);    // 命名控件名称      char TrackbarName[50];    sprintf(TrackbarName, "透明值%d", g_nAlphaValueSlider);    createTrackbar(TrackbarName, WINDOW_NAME, &g_nAlphaValueSlider, g_nMaxAlphaValue, on_Trackbar);    // 在回调函数中显示      on_Trackbar(g_nAlphaValueSlider, 0);    // 等待键盘按键结束      waitKey(0);    return 1;}
原创粉丝点击