滑动条是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. MathUtils

    package com.yqw.java.util;/** * 数字转换工具 */public class MathUtils {    /**     * short转byte     */    ...

  2. JS小练习1

    要求: 一.定义"改变颜色"的函数 二.定义"改变宽高"的函数 三.定义"隐藏内容"的函数 四.定义"显示内容"的函数 ...

  3. JVM的内存分区

    JVM的内存分区 这篇文章尝试讨论清楚JVM的内存分区情况. 1.       JVM的内存和系统内存的关系 下图是对系统内存及JVM内存的大致描绘 对大多数操作系统,内存可以分为物理内存RAM及Sw ...

  4. vue调试神器vue-devtools安装

    vue-devtools安装 vue-devtools是一款用来调试Vue应用的Chrome插件,可极大提高开发者调试项目效率,接着我们说一下如何下载安装这个插件; 一. 从chrome商店直接下载安 ...

  5. diff和patch命令(1)

    1. diff是对两个集合的差运算,patch是对两个集合的和运算. 2. diff以逐行的方式,比较文本文件的异同处.所是指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录 ...

  6. 从零开始学习前端JAVASCRIPT — 10、JavaScript基础ES6(ECMAScript6.0)

    ECMAScript 6.0(简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了.它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发 ...

  7. rabbitMQ的安装和配置(一)

    erlang是一门面向并发的编程语言,流行的消息队列rabbitMQ是基于erlang环境运行的: 系统环境 操作系统:oracle-linux7.3 erlang版本:otp_src_20.0 下载 ...

  8. 精通libGDX-RPG开发实战

    从今天开始,我会陆陆续续做一个五脏俱全的rpg小品游戏. 素材使用<圣剑英雄传II>的素材 游戏名称< Inspiration > 教程目录(暂定): Chapter 1: 开 ...

  9. 豆瓣爬虫小记(lowB版)

    爬虫小记 学习玩python正则之后,想利用正则知识学学网络爬虫. 需求分析 按照自己平时浏览的网页,留意下哪个网页的信息对自己有价值,分析要爬取哪些网页信息.这里我先爬取简单的静态网页,豆瓣网经典电 ...

  10. Android Studio 3.1 Beta 1发布,如何及时下载更新

    每次收到Android Studio更新提示,总是延迟一段时间才能下载的到或者更新成功.架梯子也不行.而且更新检测也是时断时续.Android Studio 3.0.1使用一段时间,多开几个工程.经常 ...