码迷,mamicode.com
首页 > 其他好文 > 详细

OpenCV学习笔记1:用TrackBar实现Image Gallery

时间:2015-09-15 14:19:49      阅读:388      评论:0      收藏:0      [点我收藏+]

标签:

开始找工作了,随时会把复习笔记粘上来。

今天用OpenCV提供的TrackBar实现一个Image Gallery.

1.    在OpenCV的HighGUI模块中,提供了slider(滑动条)的一种形式,称为trackbar,可以用一个int类型指定可滑动最大值。由cv::CreateTrackbar()        函数创建滑动条,与鼠标响应类似,使用回调函数实现滑动的响应事件。分别介绍cv::CreateTackbar()函数和回调函数。

      createTrackbar函数原型:

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

     参数解释: trackbarname-滑动条的名称,滑动条创建后出现在窗口的底部或顶部,不会覆盖图片

                    winname-窗口的名称

                    value-int类型的指针,用来记录滑动位置,该整数的值作为滑动条的最小值

                    count-滑动条最大值

                    onChange-指向滑动条的回调函数的指针,缺省时,仅更新value的值,不调用回调函数

                    userdata-可选参数,具体用法看例子,该参数未缺省时,回调函数的参数表要保持一致

     回调函数必须为TrackbarCallback格式,TrackbarCallback定义如下

  void (*callback) ( int position, void* userdata)

     除此之外可以通过getTrackbarPos(trackname,winname),setTrackbarPos(trackname,winname)得到和设置滑块的位置

2.实现Image Gallery

     在“ImageGallery”窗口中创建滑动条“Gallery”,option变量记录滑块的值,最大值为3;

    std::vector<cv::Mat> imgVec;
int
option = 0; cv::namedWindow("ImageGallery",CV_WINDOW_AUTOSIZE); cv::createTrackbar("Gallery","ImageGallery", &option, 3, ImageSelect, &imgVec); cv::imshow("ImageGallery",img1); cv::waitKey(0);

      回调函数的实现

    void ImageSelect( int position,void*  param )
    {
        std::vector<cv::Mat>* vec = (std::vector<cv::Mat>*) param;
        if ( (*vec).empty())
            return;

        switch( position)
        {
        case 0 :
              {
                  cv::imshow("ImageGallery",(*vec)[0]);
              }
              break;
        case 1:
            {
                  cv::imshow("ImageGallery",(*vec)[1]);
            }
             break;
        case 2:
            {
                 cv::imshow("ImageGallery",(*vec)[2]);
            }
            break;
        case 3:
            {
                cv::imshow("ImageGallery",(*vec)[3]);
            }
            break;
        }
    }

      效果图如下:

 技术分享

    用滑动条可以动态地调参数,并且一个窗体可以放置多个滑动条

OpenCV学习笔记1:用TrackBar实现Image Gallery

标签:

原文地址:http://www.cnblogs.com/stanfordbunny/p/4810000.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!