HighGUI的初步认识
2017-09-23 14:40
232 查看
OpenCV的高层GUI图形用户界面模块highgui的入门
highgui的入门可以先从这个个方面去入手1. 图像的载入 imread:主要用于读取文件到OpenCV中 可以看看其官方的原型声明:
Mat imread(const string& filename,int flags=1);
1).第一个参数:const string&类型的filename,填我们需要载入的图片路径名 在Windows操作系统下,OpenCV的imread函数支持如下类型的图像载入 ●Windows位图:*.bmp,*.dib ●JPEG文件:*.jpeg,*.jpg,*.jpe ●JPEG200文件:*.jp2 ●PNG图片:*.png ●便携文件格式:*.pbm,*.pgm,*.ppm ●Sum rasters光栅文件:*.sr,*ras ●TIFF文件:*.tiff,*.tif 2).第二个参数,int型的flags,为载入标识,用来指定一个加载图像的颜色类型 有个默认值为1,所以在调用是可以省略 这个参数可以在OpenCV中标识图像的枚举中取值 可以在highgui_c.h中找到其枚举定义的原型:
enum { /* 8bit, color or not */ CV_LOAD_IMAGE_UNCHANGED =-1, /* 8bit, gray */ CV_LOAD_IMAGE_GRAYSCALE =0, /* ?, color */ CV_LOAD_IMAGE_COLOR =1, /* any depth, ? */ CV_LOAD_IMAGE_ANYDEPTH =2, /* ?, any color */ CV_LOAD_IMAGE_ANYCOLOR =4 };
●CV_LOAD_IMAGE_UNCHANGED:等价取值为-1,这个标识基本已被废。忽略 ●CV_LOAD_IMAGE_GRAYSCALE:等价取值0,如果取这个标识的话,始终将图像转换成灰度图像再返回 ●CV_LOAD_IMAGE_COLOR:等价取值1,如果取这个标识的话,总是转换图像到彩色再返回 ●CV_LOAD_IMAGE_ANYDEPTH:等价取值2,如果取这个标识的话,且载入的图像的深度是32位或者16位,就返回对应深度的图像,否则,就转换为8位图像再返回 ●CV_LOAD_IMAGE_ANYCOLOR:等价取值4,如果取这个标识的话,载入无损的原图像 2. 图像显示 imshow:用于在指定窗口中显示一幅图像 官方声明如下:
void imshow(const string& winname,InputArray mat);
1).第一个参数:const string&类型的winname,填需要显示的窗口标识名称 2).第二个参数:InputArray类型的mat,填需要显示的图像 关于InputArray在初期学习中可以把它暂且当作Mat类来用 官方声明为:
typedef const _InputArray& InputArray;
3. 创建窗口 nameWindow:用于创建一个窗口 函数官方声明为:
void nameWindow(const string& winname,int flags=WINDOW_AUTOSIZE);
1).第一个参数,const string& winname:填写被用作窗口标识符的窗口名称 2).第二个参数:int类型的flags,窗口的标识,有如下值可选 ●WINDOW_NORMAL:用户可以改变窗口的大小 ●WINDOW_AUTOSIZE:窗口会自动调整以适应所显示的图像,用户不能手动更改 ●WINDOW_OPENGL:窗口创建时会支持OpenGL 4. 输出图像到文件 imwrite:将一个图像文件输出到设定路径 官方声明如下:
bool imwrite(const string& filename,InputArray img,const vector<int>& params=vector<int>());
1).第一个参数,const string&类型的filename,填写需要写入的路径(imwrite函数保存图像的格式是基于文件扩展名的) 2).第二个参数,InputArray类型的img,上面有说明,就不说了 3).第三个参数,const vector<int>&类型的params,表示特定格式保存的参数编码,有默认值,一般不用写 5. 创建滑动条 creatTreackbar:用于创建一个可以调整数值的滑动条,并将其附加到指定窗口上,往往会和回调函数一起配合使用; 官方的声明为:
int creatTrackbar(const string& trackbarName,const string& winname,int* vakue,int count,TrackbarCallback onChange=0,void* userdata=0);
1).第一个参数,const string&类型的tarckbarname,轨迹条的名字,用来代表我们创建的轨迹 2).第二个参数,const string&类型的winname,窗口的名字,表示这个轨迹条会附到哪个窗口上,即对应nameWindow()创建的窗口时填的某一个窗口名 3).第三个参数,int* 类型的value,一个指向整型的指针,表示滑块的位置。在创建时,滑块的初始位置就是该变量的当前值 4).第四个参数,int 类型的count,表示滑块可以达到的最大值位置的值。(滑块最小位置值始终为0) 5).第五个参数,TrackbarCallback类型的onChange,它有默认值为0,这是一个回调函数的指针,每次滑块位置改变时,这个函数都会进行回调,并且这个函数的原型必须为void XXXXX(int,void*);,第一个位置是轨迹条的位置,第二个是用户数据,如果回调是NULL指针,则表示没有回调函数的调用,仅仅第三个参数value有变化 6).第六个参数,void* 类型的userdata,也有默认值为0.这个参数是用户传给回调函数的数据,用来处理轨迹事件。如果第三个参数value实参是全局变量的话,则不用去管userdata 6. 获取当前滑动条的位置 getTrackbarPos:配合creatTrackbar,用于返回获取当前滑动条的位置 官方声明为:
int getTrackbarPos(const string& trackname,const string& winname);
1).第一个参数,const string& 类型的trackname,表示轨迹条的名字 2).第二个参数,const string& 类型的winname,表示父窗口的名字 7. 鼠标操作 setMouseCallback:为指定窗口设置鼠标回调函数 官方声明如下:
void setMouseCallback(const string& winname,MouseCallback onMouse,void* userdata=0);
1).第一个参数,const string& 类型的winname,窗口的名字 2).第二个参数,MouseCallback类型的onMouse,指定窗口里每次鼠标事件发生的时候被调用的函数指针。函数原型为void XXX(int event,int x,int y,int flags,void* param);,其中event是EVENT_加变量之一,x和y是鼠标指针在图像坐标系中的坐标值,flags是EVENT_FLAG的组合,param是用户自定义的传递到setMouseCallback函数中调用的参数。 3).第三个参数,void* 类型的userdata,用户自定义传递到回调函数,有默认值为0
相关文章推荐
- OpenCV3学习笔记-HighGUI初步
- 二.HighGUI图形用户界面初步(1.Read_Show_Write)
- OpenCV学习笔记---HighGUI的初步
- 第3章 HighGUI图形用户界面初步_3.1图像的载入/显示/输出
- opencv学习HighGUI图形用户界面初步【1】
- 第3章 HighGUI图形用户界面初步_3.2滑动条的创建和使用
- 二.HighGUI图形用户界面初步(2.Trackbar)
- 第3章 HighGUI图形用户界面初步_3.3鼠标操作
- 二.HighGUI图形用户界面初步(3.MouseEvent)
- 初步认识Firebird的Classic,superserver和embeded server
- 初步认识下Oracel的ROW_NUMBER()Over(partition by order by )
- 初步认识WebSocket技术
- 初步认识Java
- 安卓中画笔工具的初步认识
- java I/O流初步认识使用
- linux 第五章初步认识linux 作业
- struts2初学心得(对初步认识了解有帮助)
- 初步认识json
- REST|RESTful初步认识
- OpenCV--HighGUI视频读写和显示