滑动条是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 ;
}

最新文章

  1. Intellij IDEA 常用快捷键
  2. ICSharpCode.SharpZipLib.dll 移植WP
  3. Toast在关闭应用后还显示的解决办法
  4. Linux /bin、/sbin、/usr/bin、/usr/sbin目录的区别
  5. 《Python CookBook2》 第一章 文本 - 测试一个对象是否是类字符串 &amp;&amp; 字符串对齐
  6. leetcode面试准备: Word Pattern
  7. [Android] 更改关联的源码路径
  8. Oracle中的二进制、八进制、十进制、十六进制相互转换函数
  9. Matlab中矩阵的平方和矩阵中每个元素的平方介绍
  10. php获取音悦台视频
  11. [UWP]合体姿势不对的HeaderedContentControl
  12. 走进Java中的持有对象(容器类)之一 容器分类
  13. Rman常用命令
  14. 150. Evaluate Reverse Polish Notation逆波兰表达式
  15. [转帖] SQL参数化的优点 CopyFrom https://www.cnblogs.com/-lzb/articles/4840671.html
  16. Linux内核同步机制--自旋锁【转】
  17. Debezium for PostgreSQL to Kafka
  18. RTX——第7章 任务管理
  19. 在servlet中的中文乱码,相对路径和绝对路径
  20. Linux下中断程序导致写文件失败的分析

热门文章

  1. 重置CentOS 7的Root密码
  2. Netty 编解码技术 数据通信和心跳监控案例
  3. JS中的算法与数据结构——排序(Sort)(转)
  4. [HTTP] PHP 实现 HTTP Server 原理
  5. Java源码分析系列之HttpServletRequest源码分析
  6. 安装php扩展phpredis
  7. 用fiddler2调试localhost
  8. NOIP 2017 day -1 杂记
  9. 夏令营讲课内容整理Day 0.
  10. BZOJ 2882: 工艺 [后缀自动机+map]