zoukankan      html  css  js  c++  java
  • HighGUI图形图像界面初步——滑动条的创建和使用

      滑动条是OpenCV动态调节参数特别好用的一种工具,它依附于窗口而存在。由于OpenCV没有实现按钮功能,所以很多时候,我们可以用仅含0-1的滑动条来实现按钮的按下于弹起效果。

    1、创建滑动条:createTrackbar()函数

      这个函数往往和一个回调函数配合起来使用。

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

      参数说明:

      (1)第一个参数,轨迹条的名称;

      (2)第二个参数,窗口名称;

      (3)第三个参数,表示滑块的初始位置

      (4)第四个参数,表示滑块可达到的上限值。

      (5)第五个参数,这是一个执行回调函数的指针,当滑块位置变化时候这个函数都进行回掉。这个函数原型必须为:void XXXX(int,void*),其中第一个为轨迹位置,第二个为用户数据。NULL表示没有回调函数。

      (6)用户传给回掉函数的数据,用来处理轨迹时间。如果使用第三个参数value实参是全局变量的话,完全可以不用去管这个userdata参数。

      一下通过一个实验来演示滑动条的使用:

      首先定义和实现回调函数,形参有两个,一个是接收滑动条当前的位置,另一个是目标显示图像。这个回调函数是用来响应滑动条事件。传入的主要参数就是当前滑动条位置。

      然后创建一个滑动条,按照函数接口定于填入参数。

      当运行程序的时候,滑动条被初始化并且被创建,我们可以拨动滑动条的位置,此时滑动条的回调函数被调用,执行响应操作。把滑动条的值设置成图像的灰度值进行调节。

    // Trackbar.cpp: 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include <opencv2opencv.hpp>
    #include <opencv2highguihighgui.hpp>
    
    using namespace cv;
    
    #define WINDOW_NAME "【滑动条示例】"
    
    void on_Trackbar(int pos, void *dstImage)
    {
        Mat *temp = static_cast<Mat*>(dstImage);
        temp->setTo(pos);
        imshow(WINDOW_NAME,*temp);
    }
    
    int main(int argc,char** argv)
    {
        int initpos = 7;
        int maxpos = 255;
            Mat dstImage = Mat(500,600,CV_8SC1);
        namedWindow(WINDOW_NAME,1);
        char TrackBarName[50];
        memset(TrackBarName,'',sizeof(TrackBarName));
        sprintf_s(TrackBarName,"灰度值");
        createTrackbar(TrackBarName,WINDOW_NAME,&initpos,maxpos,on_Trackbar,&dstImage);
        waitKey(0);
        return 0;
    }        
  • 相关阅读:
    JS轮播图
    jquery 60秒倒计时
    jQuery 显示加载更多
    jQuery 显示加载更多
    this指针在不同情况下的指代
    web-app1--移动端等比例代码
    无障碍阅读
    javascript+dom 做javascript图片库
    初探html5---Video + DOM(视频播放)
    14个有效提高网站Banner点击率的设计技巧分享
  • 原文地址:https://www.cnblogs.com/houjun/p/8516533.html
Copyright © 2011-2022 走看看