highGUI图形用户界面
#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
using namespace cv;
图像载入、显示、输出到文件
图像载入:imread()函数
原型:
Mat imread(const string& filename, int flag=);
(1)第一个参数,载入的图片路径名。
(2)第二个参数为载入标识,在opencv标识图像格式的枚举体中取值,指定一个加载图像的颜色类型。默认载入三通道的彩色图像。
CV_LOAD_IMAGE_UNCHANGED = -; //新版本废弃
CV_LOAD_IMAGE_GRAYSCALE = ; //将图像转换为灰度再返回
CV_LOAD_IMAGE_COLOR = ; //图像转换到彩色再返回
CV_LOAD_IMAGE_ANYDEPTH = ; //载入图像为16位或32位,就返回对应深度图像,否则转换为8位图像再返回
CV_LOAD_IMAGE_ANYCOLOR = ; CV_LOAD_IMAGE_COLOR | CV_LOAD_IMAGE_ANYCOLOR; //1|4 载入三通道图
CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR; //2|4 载入真实无损的源图像
flags是int型变量,不再枚举体中取值,则:
- flags>0返回一个3通道彩色图像
- flags=0返回灰度图
- flags<0返回包含Apha通道(透明色)的加载图像
图像显示:imshow()函数
void imshow(const string& winname, InputArray mat)
(1)第一个参数,需要显示的窗口标识名称
(2)第二个参数,需要显示的图像,当做Mat类即可
imshow函数用于在指定的窗口中显示图像,如果窗口是用CV_WINDOW_AUTOSIZE(默认值)创建的,就显示图像原始大小,否则将图像进行缩放以适应窗口。
创建窗口:namedWindow()函数
若简单的图片显示就不用这个函数,但需要显示窗口之前就用到窗口名时,例如滑动条就要制定依附到某个窗口上,就需要这个函数先创建出窗口,显式的规定窗口名称。
namedWindow函数是通过指定的名字,创建一个可以作为图像和进度条的容器窗口,如果具有相同名称的窗口已经存在,则函数不做任何事情。
void namedWindow(const string& winname, int flags=WINDOW_AUTOSIZE);
(1)被用作窗口的标识符的窗口名称
(2)窗口标识:
WINDOW_NORMAL = ; //可改变窗口的大小,CV_WINDOW_NORMAL
WINDOW_AUTOSIZE = ; //窗口大小会自动调整以适应所显示的图像,用户不能手动改变窗口大小,CV_WINDOW_AUTOSIZE
WINDOW_OPENGL = ; //窗口创建时会支持OpenGL,CV_WINDOW_OPENGL
可用通过destroyWindow()或destroyAllWindow()函数关闭创区,并取消之前分配的与窗口相关的所有内存空间。
输出图像到文件:imwrite()函数
imgwrite函数用于将图像保存到指定的文件,图像格式是基于文件扩展名的,可保存的扩展名和imread中可以读取的图像扩展名一致。
bool imwrite(const string& filename, InputArray img, cost vector<int>& params=vector<int>() );
(1)需要写入的文件名,带后缀;
(2)Mat类型的图像数据
(3)const vector<int>&类型的params,表示为特定格式保存的参数编码,默认值vector<int>(),一般情况下不用填写,如果需要的话:
- JPEG,这个参数表示0~100的图片质量(CV_IMWRITE_JPEG_QUALITY),默认值是95
- PNG,这个参数表示压缩级别(CV_IMWRITE_PNG_COMPRESSION),0~9,默认值3。较高的值意味着更小的尺寸和更长的压缩时间
- PPM/PGM/PBM,这个参数表示一个二进制格式标志(CV_IMWRITE_BINARY),取值0或1,默认1。
滑动条的创建和使用
创建滑动条:createTrackbar()函数
创建一个可以调整数值的滑动条,并将滑动条附加到指定的窗口上,往往会和一个回调函数配合起来使用。
int creatTrackbar(const string& trackbarname, const string& winname, int* value, int count, TrackbarCallback onChange=, void* userdata=)
(1)const string&类型的trackbarname,轨迹条的名字
(2)cosnt string&类型的winname,窗口的名字
(3)int*类型的value,指向整型的指针,表示滑块的位置,创建时,滑块的初始位置就是该变量当前的值;
(4)int类型的cout,滑块可以到达的最大位置的值,滑块的最小位置始终为0;
(5)TrackbarCallback类型的onChange,默认值0。指向回调函数的指针,回调函数原型必须为 void xxxx(int, void*),第一个参数是轨迹条的位置,第二个参数是用户数据。如果回调是NULL指针,表示没有回调函数的调用,仅value有变化。
(6)void*类型的serdata,默认值0。用户传给回调函数的数据,处理轨迹条事件。如果value实参是全局变量,不用管userdata。
获得当前轨迹条的位置:getTrackbarPos()函数
int getTrackbarPos(const string& trackbarname, const string& winname);
(1)const string&类型的trackbarname,轨迹条的名字
(2)const string&类型的winname,轨迹条父窗口的名字;
鼠标操作
类似于滑动条的消息映射方式,都是通过一个中介函数配合一个回调函数来说显得。指定鼠标操作回调函数的函数为SetMouseCallback:
void setMouseCallback(const string& winname, MouseCallback onMouse, void* userdata=)
(1)const string&类型的winname,窗口名字;
(2)MouseCallback类型的onMouse,指定窗口里的每次鼠标时间发生的时候,被调用的函数指针。
这个函数的原型为void Foo(int event, int x, int y, int flags, void* param),其中event是EVENT_+(opencv2中CV_ENENT_+)变量之一,x和y是鼠标指针在图像坐标系(不是窗口坐标系)中的坐标值,flags是EVENT_FLAG的组合,param是用户定义的出传递到SetMouseCallbace函数调用的参数。
EVENT_MOUSEMOVE为鼠标移动消息,EVENT_LBUTTONDOWN为鼠标左键按下消息。
(3)void*类型的userdata,用户定义的传递到回调函数的参数,默认值0
highGUI图形用户界面的更多相关文章
- opencv学习HighGUI图形用户界面初步【1】
HighGUI是图形用户界面模块.包括:1.输入与输出:2.视频捕捉:3.图形和视频的解码编码:4.图形交界面与接口. 由于opencv.hpp包含了core.objdetect.ingproc.ph ...
- HighGUI 图形用户界面
参考 自opencv3编程入门一书 图形用户界面主要内容包括图像载入,显示和输出到文件 在opencv1.0时代 图像的存储结构体都是IplImage × 在2.0以后,采用Mat 类作为图像存储的数 ...
- opencv 1 HighGUI图形用户界面初步
1图像载入 显示和输出到文件 Opencv的命名空间 Mat类 图像的载入:imread()函数 图片的显示:imshow()函数 创建窗口:namedWindow()函数 输出图像到文件:imwri ...
- HighGUI图形图像界面初步—— 图像的载入、显示与输出
HighGUI模块为高层GUI图形用户界面模块,包含媒体的输入输出.视频捕捉.图像和视频的编解码.图形交互界面的接口等. 在本章中,我们将学到: 图像的载入.显示和输出到文件的详细分析 滑动条的创建和 ...
- GUI(图形用户界面)
ylbtech-Miscellaneos:GUI(图形用户界面) A,返回顶部 1, 图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显 ...
- ubuntu不能登录图形用户界面,游客身份可登陆,命令行可登陆
ubuntu是13.04版本,我猜其他的版本解决办法大概也一样.当开机进入登陆界面后我们输入密码后并没有进入应该进入的图形用户界面,而是进入一个命令行界面并且一闪而过又回到了登录界面,而已游客的身份却 ...
- 黑马程序员——【Java基础】——GUI(图形用户界面)
---------- android培训.java培训.期待与您交流! ---------- 一.概述 1.GUI(GraphicalUser Interface):又称图形用户界面,是计算机用户与计 ...
- java-GUI图形用户界面
图形用户界面GUI(Graphical User Interface),指的是在一个程序中用户可以看到的和与之交互的部分. JavaAPI中提供两套组件用于支持编写用户界面AWT and Swin ...
- MATLAB学习笔记(十一)——MATLAB图形用户界面设计
(一)菜单设计 一.建立用户菜单 1.概况: 用户菜单一般含有一级菜单和二级菜单,乃至多级菜单.每一级菜单又包含多个菜单项.建立菜单可以使用uimenu函数. 2.uimenu函数调用: %建立一级菜 ...
随机推荐
- 山东理工oj--1912--IP地址(水题)
IP地址 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 2011年2月3日,国际互联网名称与数字地址分配机构(ICANN) ...
- [雅礼NOIP2018集训 day1]
现在才来填坑,之后还要陆续补其他几天的,可能前几天真的太颓了 T1: 题目大意:给定一个长度为n的序列,m次询问每次询问给出l,r,询问区间l到r的元素在模k意义下的最大值 数据范围当然是你暴力写不过 ...
- MYSQL binlog 日志内容查看
记录mysql数据库真正执行更改的所有操作(DML语句),不包含那些没有修改任何数据的语句,不会记录select和show这样的语句. 二进制日志的作用: 1. 可以完成主从复制的功能 2. 进行恢复 ...
- Wireshark filter语法
过滤器语法 ------------------------------------------------------------- 最简单的过滤允许你检查一个协议或者字段的存在.如果你想查看所有的 ...
- spark集群体系结构
- VP红外遥控器实现
要点: 1.设置外部中断为边沿触发(包含下降沿和上升沿),下降沿TimeOut=0,上升沿读取TimeOut计数. 2.定时器中TimeOut++,定时器定时中断周期为100us 3.红外的只有两种时 ...
- [USACO4.1]篱笆回路Fence Loops
题目:USACO Training 4.1(在官网上提交需加文件输入输出).洛谷P2738. 题目大意:给你一张图里的边集,让你求出这张图的最小环. 解题思路:求最小环很简单,用Floyd即可.最重要 ...
- 一片非常有趣的文章 三分钟读懂TT猫分布式、微服务和集群之路
原文http://www.cnblogs.com/smallSevens/p/7501932.html#3782600 三分钟读懂TT猫分布式.微服务和集群之路 针对新手入门的普及,有过大型网站技 ...
- IdentityServer4-前后端分离之Vue
原文:IdentityServer4-前后端分离之Vue 前言 之前文章讲到如何使用Node.js+Express构建JavaScript客户端,实现前后端分离.本节将介绍如何使用Vue实现前后端分离 ...
- solr启动时报错org.apache.solr.common.SolrException: undefined field text的解决办法
solr启动时报错org.apache.solr.common.SolrException: undefined field text的解决办法 原创 2015年08月21日 20:47:40 标签: ...