OpenCV笔记-highgui之滑动条(slider或tracker)、开关(switch)

opencv中创建滑动条的函数:

/* create trackbar and display it on top of given window, set callback */

CVAPI(int) cvCreateTrackbar( const char* trackbar_name, const char* window_name,

                             int* value, int count, CvTrackbarCallback on_change CV_DEFAULT(NULL));

trackbar_name:滑动条名字

window_name:窗口名字

value:滑动条滑动时,输出的滑块的位置

count:滑动条所能表示的最大值

on_change:滑动条滑动时所调用的回调函数

 

滑动条回调函数格式如下:

typedef void (CV_CDECL *CvTrackbarCallback)(int pos);

pos:调用回调函数时传入的滑块位置

因为opencv没有按钮,所以用滑块模拟按钮,示例代码:

#include <cv.h>

#include <highgui.h>

#include <cstdio>



int g_switch_value = 0;



void on_change(int position)

{

    if(position == 0)

    {

        printf("开关关\n");

    }

    else

    {

        printf("开关开\n");

    }

}



int main()

{

    IplImage *image = cvLoadImage("EW.bmp");



    cvNamedWindow("Slider Trackbars Switches");

    cvShowImage("Slider Trackbars Switches", image);

    cvCreateTrackbar("Switch", "Slider Trackbars Switches", &g_switch_value, 1, on_change);

    while(1)

    {

        if(27 == cvWaitKey(0)) break;

    }

    cvReleaseImage(&image);

    cvDestroyWindow("Slider Trackbars Switches");

    return 0;

}

 

获取滑块位置的总结:

1.创建滑块时设置的参数value

2.调用回调函数的传入的参数

3.使用下面的函数设置和获取滑块的位置:

/* retrieve or set trackbar position */

CVAPI(int) cvGetTrackbarPos( const char* trackbar_name, const char* window_name );

CVAPI(void) cvSetTrackbarPos( const char* trackbar_name, const char* window_name, int pos );

 

你可能感兴趣的:(opencv)