滑动条是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 <opencv2\opencv.hpp>
#include <opencv2\highgui\highgui.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 = ;
int maxpos = ;
Mat dstImage = Mat(,,CV_8SC1);
namedWindow(WINDOW_NAME,);
char TrackBarName[];
memset(TrackBarName,'\0',sizeof(TrackBarName));
sprintf_s(TrackBarName,"灰度值");
createTrackbar(TrackBarName,WINDOW_NAME,&initpos,maxpos,on_Trackbar,&dstImage);
waitKey();
return ;
}

HighGUI图形图像界面初步——滑动条的创建和使用的更多相关文章

  1. HighGUI图形图像界面初步—— 图像的载入、显示与输出

    HighGUI模块为高层GUI图形用户界面模块,包含媒体的输入输出.视频捕捉.图像和视频的编解码.图形交互界面的接口等. 在本章中,我们将学到: 图像的载入.显示和输出到文件的详细分析 滑动条的创建和 ...

  2. HighGUI图形图像界面初步——鼠标操作

    OpenCV中的鼠标操作和滑动条的消息映射方式很类似,都是通过一个中介函数配合一个回调函数来实现的,创建和指定滑动条回调函数为createTrackbar, 而指定鼠标操作消息回调函数的函数为setM ...

  3. OpenCV 为程序界面添加滑动条

    #include <cv.h> #include <highgui.h> using namespace cv; /// 全局变量的声明与初始化 ; int alpha_sli ...

  4. opencv —— createTrackbar、getTrackbarPos 滑动条的创建和使用

    创建滑动条:createTrackbar 函数 createTrackbar 函数用于创建一个可以调整数值的滑动条,并将滑动条附加在指定的窗口上. int createTrackbar(const s ...

  5. opencv 1 HighGUI图形用户界面初步

    1图像载入 显示和输出到文件 Opencv的命名空间 Mat类 图像的载入:imread()函数 图片的显示:imshow()函数 创建窗口:namedWindow()函数 输出图像到文件:imwri ...

  6. Opencv关于滑动条bar操作的实例

    代码如下: //////////////////////////////////////////////////////////////////////// // // 该程序产生一个窗口10s 如果 ...

  7. highGUI图形用户界面

    #include <opencv2\core\core.hpp> #include <opencv2\highgui\highgui.hpp> using namespace ...

  8. 关于Unity中NGUI的Checkbox复选框、Slider滑动条和Button的6种触发回调事件的方式

    Checkbox复选框 1.创建一个NGUI背景Sprite1节点 2.打开NGUI---->Open---->Prefab Toolbar---->选择一个复选框节点,拖拽到背景节 ...

  9. OpenCV3添加滑动条和鼠标事件到图形界面

    鼠标事件和滑动条控制在计算机视觉和OpenCV中非常有用,使用这些控件,用户可以直接与图形界面交互,改变输入图像或者变量的属性值. /* In this section, we are going t ...

随机推荐

  1. java基础(一) 深入解析基本类型

    .   浮点数使用 IEEE(电气和电子工程师协会)格式. 浮点数类型使用 符号位.指数.有效位数(尾数)来表示.要注意一下,尾数的最高 在java中,float 和 double 的结构如下: 类 ...

  2. 序列化日期(yyyy-MM-dd hh:mm:ss)

    var getDateFormat = function() { var _date = new Date(); //实例化一个Date对象 var _complete = function(valu ...

  3. JAX-RS和Jersey

    一:JAX-RS JAX-RS是JAVA EE6 引入的一个新技术. JAX-RS即Java API for RESTful Web Services,是一个Java 编程语言的应用程序接口,支持按照 ...

  4. 《深入理解Java虚拟机》学习笔记(二)

    垃圾回收的前提是判断对象是否存活,对象不再存活时将会被回收,下面是2种判断的方法. 引用计数法: 主流的Java虚拟机并没有使用引用计数法来管理内存,重要的原因就是循环引用的问题难以解决. 可达性分析 ...

  5. ant基础[转]

    原文链接:http://www.cnblogs.com/wufengxyz/archive/2011/11/24/2261797.html 1,什么是antant是构建工具2,什么是构建概念到处可查到 ...

  6. POJ 2065 SETI [高斯消元同余]

    题意自己看,反正是裸题... 普通高斯消元全换成模意义下行了 模模模! #include <iostream> #include <cstdio> #include <c ...

  7. Redis 学习(二) —— 数据类型及操作

    Redis支持string.list.set.zset.hash等数据类型,这一篇学习redis的数据类型.命令及某些使用场景. 一.String,字符串 字符串是 Redis 最基本的数据类型.一个 ...

  8. PPPoE拨号流程

    PPPoE(Point to Point Protocol over Ethernet,基于以太网的点对点协议)的工作流程包含发现(Discovery)和会话(Session)两个阶段,发现阶段是无状 ...

  9. WinFom中经典小游戏(含源码)

    最近整理了若干经典的小游戏,无聊时可以打发时间.程序本身不大,练手非常不错,主要是GDI编程,主界面地址如下图所示 源码下载方式 1,关注微信公众号:小特工作室(也可直接扫描签名处二维码) 2,发送: ...

  10. Android Stdio 中的Rendering Problems Android N requires the IDE to be running with Java 1.8 or later Install a supported JDK解决办法

    出现如下图所示的错误 解决办法为: 然后在里面输入SDK 下载 下载APILevel为23版本的SDK 换成23版本的SDK 完美解决问题