opencv 之 createTrackbar的使用

标签: getTrackbarPos opencv 全局变量 on_Tracbar createTrackbar
3人阅读 评论(0) 收藏 举报
分类:

主要讲解createTrackbar的使用,以及通过参数避免使用全局变量

函数原型:

int createTrackbar(conststring&trackbarname, conststring&winname, int* value, int count,

    TrackbarCallback onChange=0,void* userdata=0); 

参数说明:

第一个参数,const string&类型的trackbarname,表示轨迹条的名字,用来代表我们创建的轨迹条。

第二个参数,const string&类型的winname,填窗口的名字,表示这个轨迹条会依附到哪个窗口上,

    即对应namedWindow()创建窗口时填的某一个窗口名。

第三个参数,int* 类型的value,一个指向整型的指针,表示滑块的位置。

    并且在创建时,滑块的初始位置就是该变量当前的值。

第四个参数,int类型的count,表示滑块可以达到的最大位置的值。PS:滑块最小的位置的值始终为0。

第五个参数,TrackbarCallback类型的onChange,首先注意他有默认值0。

    这是一个指向回调函数的指针,每次滑块位置改变时,这个函数都会进行回调。

    并且这个函数的原型必须为void XXXX(int,void*);

    其中第一个参数是轨迹条的位置,第二个参数是用户数据(看下面的第六个参数)。

    如果回调是NULL指针,表示没有回调函数的调用,仅第三个参数value有变化。

第六个参数,void*类型的userdata,他也有默认值0。这个参数是用户传给回调函数的数据,用来处理轨迹条事件。

    如果使用的第三个参数value实参是全局变量的话,完全可以不去管这个userdata参数。

/***************滑动条控制透明度*******************/

void SliderAlpha();
void on_Tracbar(int,void*);

#define MAX_ALPHA 100
void SliderAlpha()
{
	int sliderAlpha;	//滑动条当前值

	//声明存储图片的变量
	Mat image[2];
	image[0] = imread("./image/girl.jpg");
	image[1] = imread("./image/view5.jpg");

	//创建窗体
	namedWindow("Girl",WINDOW_NORMAL);
	//设置滑动条初始值
	sliderAlpha = 50;
	//在窗体中添加滑动条,注意最后参数的传递,避免的全局变量
	createTrackbar("透明度", "Girl", &sliderAlpha, MAX_ALPHA,on_Tracbar,&image);
	//第一次运行,先放置图片
	addWeighted(image[0], 0.5, image[1], 0.5, 0, image[0]);
	imshow("Girl", image[0]);
	//结果在回调函数中显示
	//按任意键退出
	waitKey(0);
}
//滑动条回调函数
void on_Tracbar(int sliderAlpha,void* dstImage)
{
	//static_cast<>用于安全转换指针
	Mat* tempImage = static_cast<Mat*> (dstImage);

	double alphaValue;
	double betaValue;
	//设alphaValue+betaValue=1.0
	alphaValue = (double)sliderAlpha /MAX_ALPHA;
	betaValue = 1 - alphaValue;

	cout << "当前比例" << endl;
	cout << "alphaValue/betaValue: " << alphaValue << "/" << betaValue << endl;
	//根据alphaValue和betaValue,线性混合
	Mat dst;
	addWeighted(tempImage[0],alphaValue,tempImage[1],betaValue,0, dst);
	imshow("Girl", dst);
}


还有一种方法避免全局变量:

通过getTrackbarPos()函数获取指针位置

int getTrackbarPos(const string& trackbarname, const string& winname)

参数一:滑动条名字

参数二:窗体名字

查看评论

OpenCV学习笔记(11)createTrackbar使用方法及步骤

转载自:http://blog.csdn.net/mysee1989/article/details/41379817 createTrackbar是OpenCV中的API,其可在显示图像的窗口...
  • u013270326
  • u013270326
  • 2017-05-31 16:08:22
  • 509

opencv(九)之轨迹条条创建和使用createTrackbar

上篇介绍图像混合时,需要设置两幅图像的权重,每次改变图像权重只能从代码改变,没有那么直观。opencv提供了一种称为轨迹条或滑动条(Trackbar)的控件工具,能够直观的改变出现处理时的参数,实时看...
  • keith_bb
  • keith_bb
  • 2016-11-15 21:20:47
  • 2380

opencv 滑动条 cvCreateTrackbar()

typedef void (CV_CDECL *CvTrackbarCallback)(int pos); /* create trackbar and display it on top of gi...
  • u012005313
  • u012005313
  • 2015-07-07 13:45:06
  • 3046

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

一、要在一副图像上加一个滑动条的步骤:1.先建立一个窗口,该窗口就是而后要把trackba放上去的父窗口。即trackbar属于那个窗口。2.创建trackbar。要用到函数cvCreateTrack...
  • moc062066
  • moc062066
  • 2011-06-14 16:24:00
  • 8227

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

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

OpenCv学习笔记(八)---细说HighGUI(图像用户界面)之滑动条createTrackbar()详解

(一)OpenCv中HighGUI(图形用户界面)的简述 1--OpenCv中将与操作系统,文件系统和摄像机之间的硬件交互的一些函数纳入了HighGUI (high-level graphica...
  • maweifei
  • maweifei
  • 2016-04-26 16:44:58
  • 1913

学习OpenCV:createTrackbar

基于OpenCV 2.3.2 documentation,createTrackbar官方文档说明: createTrackbar Creates a trackbar and attaches it...
  • dotadage
  • dotadage
  • 2014-12-26 10:27:21
  • 2916

createTrackbar使用方法及步骤

可在显示图像的窗口中快速创建一个滑动
  • mysee1989
  • mysee1989
  • 2014-11-22 11:29:39
  • 7168

openCV(2)-creatTrackbar()函数及回调函数

在openCV 中没有按钮,所以我们会经常用到滑动条的功能,用到滑动条,就会遇到这两个东西。creatTrackbar()函数和回调函数的概念。 creatTrackbar() int createT...
  • CV_YOU
  • CV_YOU
  • 2016-11-17 16:31:37
  • 1050

OpenCV之轨迹条(TrackBar)的创建和使用

一、OpenCV中轨迹条(Trackbar)的创建和使用 创建轨迹条——createTrackbar函数详解 createTrackbar这个函数我们以后会经常用到,它创建一个可以调整数值...
  • u011028345
  • u011028345
  • 2017-07-28 20:03:22
  • 357
    个人资料
    持之以恒
    等级:
    访问量: 5383
    积分: 742
    排名: 6万+
    最新评论