OPENCV之Highgui的一些操作

HighGUI模块为高层GUI图形用户界面模块,包括媒体的输入和输出,视频捕捉,图像和视频的编码和解码,图形交互界面等内容。opencv中常用的交互操作包括图像的载入,显示和输出,为程序添加滑动条,以及鼠标等的常用操作。
opencv的滑动条的创建:
滑动条是opencv动态调节参数的工具,它依附于窗口而存在呢。createTrackbar()函数用于创建一个可以调整数值的滑动条会和一个回调函数配合起来使用的。int createTrackbar(trackbarname,winname,int* value,int count,TrackbarCallBack onChange=0,void* userdata=0);
1.滑动条的名字
2.滑动条依附于窗口的名字
3.一个指向整形的指针,表示滑块的位置,在创建时滑块的初始位置就是该变量的当前值。滑块的值动态的
4.表示滑块可以到达的最大值,最小数值默认是0
5.是一个指向回调函数的指针,回调函数就是指在滑动条动态变化是对图像进行的相应操作,直接写回调函数的名字代表指针,回调函数有两个参数,第一个参数是滑块的当前值,第二个参数是用户数据默认值为0,深层次的研究会用到
6.用户数据

回调函数,就是通过函数指针调用的函数,如果我们把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,就被称为回调函数,回调函数不由该函数的实现方直接调用,而是在特定的时间或者条件中由另外一方调用,用于对该事件的相应。

整体的编程框架为
1.头文件的调用 #include<opencv2\opencv.hpp>
#include<opencv2\highgui\highgui.hpp>
using namespace cv;

2.对一些多次调用的名字什么的进行宏定义
#define windowname “滑动条的调用”
3.对一些特定变量的定义
const int count;等常量的定义,滑动条的最大值
int Value;整形变量的定义 ,滑动条的具体值
double …等计算中的常量注意计算时的转换
4.声明存储图像的变量
Mat …
5.滑动条的回调函数的编写,回调函数的目的就是实现滑动条和图像处理之间的功能函数
void on_Trackbar(int void*) 固定的格式
{
int是滑动条的值,用这个值对图像进行处理;
}
6.主函数,控制台应用程序的入口函数程序从这里开始执行
int main()
{
1.加载图像,根据需要进行加载图像
2.为了程序的规范化可以用if语句进行判断图片是否加载成功变量名.data,若没有加载成功的话可以通过printf函数反应给控制台打印输出
3.设置滑动条的初始值Value=;
4.创建窗体 namedWindow(“mingzi”,默认)默认=1,2,3,窗体和图像大小之间的调整
5.在创建的窗体上创建一个滑动条控件
char TrackbarName[n];创建一个字符数组用于存储滑动条 这一步可以放在最前面进行定义
sprintf(TrackbarName,“滑动条的名字 %d”,count最大值);
6.创建滑动条
createTrackbar(TrackbarName,Name,&Value,count,on_Trackbar回调函数);

     回调函数赋值  on_Trackbar(Value,0);//默认是0
            7.waitKey(0);控制台和图像的保持
            8.return 0;返回值的利用

以上就是坐着把编程思路理出来的
一个很重要的模块就是获取当前轨迹条的位置;也就是轨迹条显示的值
C++:int getTrackbarPos(trackbarname,winname);很明显这个函数返回的是一个整形的数字,需要用到时判断,事件,等都可以用。调用时需要定义一个整形的变量然后配合函数来获取滑动条当前的数值,可以printf打印输出到控制台便于观察数据。
}

猜你喜欢

转载自blog.csdn.net/nbxuwentao/article/details/85626080