学习OpenCV(六)TrackBar的使用

原创 2013年12月04日 13:38:01


在以前的几个例子里面,我们并没有实现与计算机的交互。在OpenCV中,我们可以使用TrackBar来进行交互,调整一些参数的大小。这篇文章主要介绍了如何使用TrackBar。

举一个均值滤波blur的例子。我们已经知道,卷积核影响了均值滤波的效果。卷积核越大,图像的模糊化越严重。我们可以使用TrackBar动态地调整卷积核的大小,这样可以使得实验效果更加直观。

首先,来看一下参考手册中的描述。我们可以使用createTrackbar函数来创建一个TrackBar。这个函数的原型如下:


其中,参数的意义为:

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

trackbarName为创建的TrackBar的名字,

winName为创建的TrackBar所依附的窗体名字,

*value指针指向的是TrackBar当前的值,可以通过设置它改变游标的位置,

count为TrackBar的量程,注意一般情况下bar的最小值都是0,

TrackbarCallback为一个函数指针,这个函数必须有下面的原型:

void onChangeTrackbar(int ,void* );

其中第一个参数是trackerbar的值,第二个参数是一个无类型的指针,指向userdata(参数的意义见下面)这个函数作为回调函数,在TrackBar的值发生改变的时候被调用。如果这个参数被传进去一个空指针NULL,那么当TrackBar值发生改变的时候什么也不做。

userdata是指向我们想传给回调函数onChangeTrackbar的数据的一个指针。有了这个指针,我们可以不用设置太多的全局变量。在回调函数中,需要将这个指针强制类型转换为我们的实际数据类型指针,然后用*运算符取出数据。

下面就是例程:

#include <iostream>
#include <opencv/cv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace std;
using namespace cv;

//定义了窗体名
string winName="Blur Filter";

//TrackBar发生改变的回调函数
void onChangeTrackBar(int poi,void* usrdata);

//主函数
int main ()
{
	//trackbar名
	string trackBarName="Size";
	//图像文件名
	string imgName="image.tif";
	//trackbar的值
	int poiTrackBar=0;
	//trackbar的最大值
	int maxValue=35;

	Mat img;
	img=imread (imgName,CV_LOAD_IMAGE_COLOR);   //读入图像
	namedWindow(winName);      //新建窗口
	imshow (winName,img); 
	//创建trackbar,我们把img作为数据传进回调函数中
	createTrackbar (trackBarName,winName,&poiTrackBar,maxValue,
					onChangeTrackBar ,&img);
					
	waitKey ();
	return 0;
}

//回调函数
void onChangeTrackBar (int poi,void* usrdata)
{
	Mat img=*(Mat*)(usrdata);   //强制类型转换
	Mat dst;
	if (poi%2==0)  //poi是偶数,把它减1变为奇数
	{
		poi-=1;
	}
	if (poi>0)   //poi是奇数
	{
		//改变矩阵核
		Size blurSize=Size(poi,poi);
		//刷新
		blur (img,dst,blurSize);
		imshow (winName,dst);
	} 
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

【OpenCV入门教程之六】 创建Trackbar & 图像对比度、亮度值调整

转自http://blog.csdn.net/poem_qianmo/article/details/21479533 本系列文章由@浅墨_毛星云 出品,转载请注明出处。   ...

【OpenCV入门教程之六】 创建Trackbar & 图像对比度、亮度值调整

本系列文章由@浅墨_毛星云 出品,转载请注明出处。   文章链接: http://blog.csdn.net/poem_qianmo/article/details/21...

【OpenCV入门教程之六】 创建Trackbar & 图像对比度、亮度值调整

本系列文章由@浅墨_毛星云 出品,转载请注明出处。   文章链接: http://blog.csdn.NET/poem_qianmo/article/details/21479533 作者...

OpenCV学习笔记(14)创建Trackbar & 图像对比度、亮度值调整

本系列文章由@浅墨_毛星云 出品,转载请注明出处。   文章链接: http://blog.csdn.net/poem_qianmo/article/details/21...

【OpenCV】 TrackBar的使用

:学习OpenCV(六)TrackBar的使用 | 学步园 +复制链接 在以前的几个例子里面,我们并没有实现与计算机的交互。在OpenCV中,我们可以使用TrackBar来进行交互,调整一些参数...
  • otones
  • otones
  • 2015年03月13日 20:45
  • 467

Python下使用OpenCV——使用Trackbar实现绘图板

本次实验利用到了createTrackbar和getTrackbarPos函数实现一个绘图板的功能,用户可以选择矩形或是画笔模式,并设置调色板中值来选择颜色,选择画笔大小,进行绘图。除此之外,还可以用...

【OpenCV入门教程之六】 创建Trackbar & 图像对比度、亮度值调整

本系列文章由@浅墨_毛星云 出品,转载请注明出处。   文章链接: http://blog.csdn.net/poem_qianmo/article/details/21...

【OpenCV入门教程之六】 创建Trackbar & 图像对比度、亮度值调整

这篇文章中我们一起学习了如何在OpenCV中用createTrackbar函数创建和使用轨迹条,以及图像对比度、亮度值的动态调整。 文章首先详细讲解了OpenCV2.0中的新版创建轨迹条的函数c...

[转]【OpenCV入门教程之六】 创建Trackbar & 图像对比度、亮度值调整

文章来自浅墨_毛星云: http://blog.csdn.net/poem_qianmo/article/details/21479533 这篇文章中我们一起学习了如何在OpenCV中用...

【Ubuntu+OpenCV】HighGUI之trackbar(滑动条)的创建--学习笔记【2】

一、要在一副图像上加一个滑动条的步骤:1.先建立一个窗口,该窗口就是而后要把trackba放上去的父窗口。即trackbar属于那个窗口。2.创建trackbar。要用到函数cvCreateTrack...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习OpenCV(六)TrackBar的使用
举报原因:
原因补充:

(最多只允许输入30个字)