9-滑动条(滚动条)创建与实现;createTrackbar()函数

原创 2018年04月17日 10:16:44

在前几节的讲解中,我们若想换个演示结果,就需要每次在程序里修改参数值,然后再次运行此程序,用起来很麻烦,若是可以在窗口中实时调整参数值,从而显示结果岂不是很方便。

OpenCV里提供了一个很好用的工具——滑动条(Trackbar),它依附于窗口而存在。

1-createTrackbar()函数

此函数的作用:可以动态调节参数。
int createTrackbar(const string& trackbarname, const string& winname,
                              int* value, int count,
                              TrackbarCallback onChange = 0,
                              void* userdata = 0);

参数说明
  • 参数1:滑动条的名称。
  • 参数2:窗口的名称,就是说这个创建的滑动条所要依附到哪个窗口上。
  • 参数3:表示滑块的位置。在创建时,滑块的初始位置就是该变量当前的值。
  • 参数4:表示滑块可以滑到的最大值位置。滑块的最小值始终为0。
  • 参数5:TrackbarCallback类型的onChange,它有默认值为0。这是一个指向回调函数的指针,每次滑块位置改变时,这个函数都会进行回调。并且这个函数的原型必须为  void XXXXX(int, void*);
  • 参数6:void*类型的userdata,它也有默认值为0。这个参数是用户传给回调函数的数据,用来处理滑动条的调用。如果使用的第3个参数value实参是全局变量的话,完全可以不用去管这个userdata参数。
======================分割线===============
//功能:用轨迹条来控制两幅图像的Alpha混合

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp> 
#include <iostream> 
using namespace cv;
using namespace std;

#define WINDOW_NAME "【带有滑动条的两图像融合】"	//为窗口标题定义的宏

//----------【全局变量声明部分】----------
const int g_nMaxAlphaValue = 100;	//Alpha最大值
int g_nAlphaNow;  //滑动条此刻对应的值
double g_dAlphaValue;	//Alpha值
double g_dBetaValue;	//Beta值
Mat g_srcImage1;	//源图像1
Mat g_srcImage2;	//源图像2	
Mat g_dstImage;		//输出图像

//-------------【全局函数声明部分】----------------
void on_TrackBarChange(int, void*);	//响应滑动条的回调函数

//-------------------【主程序】-----------------
int main(int argc, char** argv)
{
	//【1】读取原始图像(两幅图像尺寸需相同)并检查图像是否读取成功  
	g_srcImage1 = imread("demo01.jpg");
	g_srcImage2 = imread("demo02.jpg");
	if (g_srcImage1.empty() && g_srcImage2.empty())
	{
		cout << "读取第一幅图片错误,请重新输入正确路径!\n";
		return -1;
	}


	//【2】设置滑动条初始值为50
	g_nAlphaNow = 50;
	//【3】创建窗体
	namedWindow(WINDOW_NAME, 1);//参数一:窗体名称。参数二:0表示窗口尺寸可手动调整;1表示窗口尺寸为图像尺寸大小,且固定不可调。
	//【4】在创建的窗体中创建一个滑动条控件
	createTrackbar("透明值", WINDOW_NAME, &g_nAlphaNow, g_nMaxAlphaValue, on_TrackBarChange);
	//【5】结果在回调函数中显示
	on_TrackBarChange(g_nAlphaNow, 0);
	//【6】保持等待状态,按任意键退出
	waitKey(0);
	return 0;
}

//-------------【响应滑动条的回调函数】----------------
void on_TrackBarChange(int, void*)
{
	//求出当前alpha值相对于最大值的比例
	g_dAlphaValue = (double)g_nAlphaNow / g_nMaxAlphaValue;
	//则beta值为1减去alpha值
	g_dBetaValue = (1.0 - g_dAlphaValue);

	//调整ahand的大小与ac的大小一致,融合函数addWeighted()要求输入的两个图形尺寸必须相同  
	resize(g_srcImage2, g_srcImage2, Size(g_srcImage1.cols, g_srcImage1.rows));

	//根据alpha和beta值进行线性混合
	addWeighted(g_srcImage1, g_dAlphaValue, g_srcImage2, g_dBetaValue, 0.0, g_dstImage);
	//显示效果图
	imshow(WINDOW_NAME, g_dstImage);
}

【Python】第六周 Python Web项目开发实现(下)

本周课程主要通过Django框架开发Web商城项目,特别是网站的前台模块。具体内容有:商城前台界面搭建,会员注册登录与退出、商品展示,购物车实战、会员下单操作,后台订单处理,前台会员中心的订单处理等模块开发。本周课程主要老师引导学员一起开发,通过代码的实战,让学员完成了从会员的注册、登录到商品浏览、放入购物车、再到下单完成。以及最后的订单处理。包括了商城购物流程的基本模块。
  • 2018年04月16日 17:44

为程序界面添加滑动条--createTrackbar()

createTrackbar( ) 作用:创建一个滚动条并把它附加到特定的窗口中。 形式:int createTrackbar(const string& trackbarname, cons...
  • u014310328
  • u014310328
  • 2015-06-07 20:33:57
  • 751

python opencv入门 滚动条控制调色板(5)

内容来自OpenCV-Python Tutorials 自己翻译整理目标: 使用滚动条绑定窗口 学习如下函数 cv2.getTrackbarPos(), cv2.createTrackbar() ...
  • tengfei461807914
  • tengfei461807914
  • 2017-07-18 16:38:44
  • 843

利用OpenCV的函数createTrackbar创建滑动条查看二值化的最佳阈值的源码及讲解

这个功能的实现其实很简单,主要是要明白createTrackbar函数的使用方法! 先上源码,源码中用到的图像的下载链接为 http://pan.baidu.com/s/1dFqJnXJ //Open...
  • wenhao_ir
  • wenhao_ir
  • 2016-05-30 16:54:33
  • 1833

opencv基本图像处理——添加滑动条trackbar

int cvCreateTrackbar( const char* trackbar_name, //滑动条的名称 const char* window_name, //窗口的名称,滑动条不会遮挡...
  • ji0525084
  • ji0525084
  • 2013-08-02 14:29:53
  • 6101

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

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

【拜小白opencv】9-滑动条(滚动条)创建与实现;createTrackbar()函数

滑动条(滚动条)创建与实现;createTrackbar()函数;利用滑动条改变参数,观察两幅图像融合不同值的效果。...
  • sinat_36264666
  • sinat_36264666
  • 2017-08-14 18:47:09
  • 862

createTrackbar使用方法及步骤

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

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

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

opencv中创建多个滚动调进行多个参数调用(

步骤:第一,全局声明:在程序开头建立滚动条调用函数的声明和需要调整的参数的声明                 如static void ContrastAndBright(int, void *)...
  • u014732274
  • u014732274
  • 2016-01-07 11:23:03
  • 801
收藏助手
不良信息举报
您举报文章:9-滑动条(滚动条)创建与实现;createTrackbar()函数
举报原因:
原因补充:

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