#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图形用户界面的更多相关文章

  1. opencv学习HighGUI图形用户界面初步【1】

    HighGUI是图形用户界面模块.包括:1.输入与输出:2.视频捕捉:3.图形和视频的解码编码:4.图形交界面与接口. 由于opencv.hpp包含了core.objdetect.ingproc.ph ...

  2. HighGUI 图形用户界面

    参考 自opencv3编程入门一书 图形用户界面主要内容包括图像载入,显示和输出到文件 在opencv1.0时代 图像的存储结构体都是IplImage × 在2.0以后,采用Mat 类作为图像存储的数 ...

  3. opencv 1 HighGUI图形用户界面初步

    1图像载入 显示和输出到文件 Opencv的命名空间 Mat类 图像的载入:imread()函数 图片的显示:imshow()函数 创建窗口:namedWindow()函数 输出图像到文件:imwri ...

  4. HighGUI图形图像界面初步—— 图像的载入、显示与输出

    HighGUI模块为高层GUI图形用户界面模块,包含媒体的输入输出.视频捕捉.图像和视频的编解码.图形交互界面的接口等. 在本章中,我们将学到: 图像的载入.显示和输出到文件的详细分析 滑动条的创建和 ...

  5. GUI(图形用户界面)

    ylbtech-Miscellaneos:GUI(图形用户界面) A,返回顶部 1, 图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显 ...

  6. ubuntu不能登录图形用户界面,游客身份可登陆,命令行可登陆

    ubuntu是13.04版本,我猜其他的版本解决办法大概也一样.当开机进入登陆界面后我们输入密码后并没有进入应该进入的图形用户界面,而是进入一个命令行界面并且一闪而过又回到了登录界面,而已游客的身份却 ...

  7. 黑马程序员——【Java基础】——GUI(图形用户界面)

    ---------- android培训.java培训.期待与您交流! ---------- 一.概述 1.GUI(GraphicalUser Interface):又称图形用户界面,是计算机用户与计 ...

  8. java-GUI图形用户界面

    图形用户界面GUI(Graphical User Interface),指的是在一个程序中用户可以看到的和与之交互的部分. JavaAPI中提供两套组件用于支持编写用户界面AWT  and  Swin ...

  9. MATLAB学习笔记(十一)——MATLAB图形用户界面设计

    (一)菜单设计 一.建立用户菜单 1.概况: 用户菜单一般含有一级菜单和二级菜单,乃至多级菜单.每一级菜单又包含多个菜单项.建立菜单可以使用uimenu函数. 2.uimenu函数调用: %建立一级菜 ...

随机推荐

  1. [JZOJ5166] [NOIP2017模拟6.26卢学魔] 解题报告 (记忆化搜索|拓扑排序)

    题目链接: http://172.16.0.132/senior/#main/show/5166 题目: 题解: 这个没什么好讲的,就是注意生产者没人吃也不是食物链,这告诉我们要积累生物知识注意细节 ...

  2. springboot shiro 多realm配置认证、授权

    shiro进行登录认证和权限管理的实现.其中需求涉及使用两个角色分别是:门店,公司.现在要两者实现分开登录.即需要两个Realm——MyShiroRealmSHOP和MyShiroRealmCOMPA ...

  3. 编译Speex生成so库文件(android-speex)

    项目中需要用音频格式转换,之前使用VoAacEncoder,部分手机总是莫名崩溃,所以决定不再使用VoAacEncoder,换做Speex来完成格式转换,但是没有找到Speex的库文件,网上介绍的都是 ...

  4. Paper Reading: Relation Networks for Object Detection

    Relation Networks for Object Detection笔记  写在前面:关于这篇论文的背景知识,请参考我前面的两篇随笔(<关于目标检测>和<关于注意力机制> ...

  5. Tarjan专题

    前排Orz tarjan tarjan算法在图的连通性方面有非常多的应用,dfn和low数组真是奥妙重重(并没有很搞懂反正背就完事了) 有向图强连通分量 #include<iostream> ...

  6. -bash: nginx: 未找到命令 (command not found) 解决方案

    昨天在linux中安装了 nginx ,并按照网上教程 进行启动 如: ps -ef | grep nginx 可以查看到 我就想重新加载一次 如:提示我找不到 nginx 命令 -c参数指定了要加载 ...

  7. Virtualenv入门基础教程

    本文目录: [TOC]虚拟环境简介 VirtualEnv用于在一台机器上创建多个独立的Python虚拟运行环境,多个Python环境相互独立,互不影响,它能够: 在没有权限的情况下安装新套件    不 ...

  8. 紫书 例题8-6 UVa 1606(扫描法)

    这道题目用扫描法 扫描法:在枚举的过程中维护一些重要的量, 从而简化计算 这道题用到了极角, 叉积, 高一的我表示一脸懵逼 不过自己去百度了一下好像大概看得懂. 这道题我还有一些疑问, 先这样吧 #i ...

  9. SpringBoot实战(四)获取接口请求中的参数(@PathVariable,@RequestParam,@RequestBody)

    上一篇SpringBoot实战(二)Restful风格API接口中写了一个控制器,获取了前端请求的参数,现在我们就参数的获取与校验做一个介绍: 一:获取参数 SpringBoot提供的获取参数注解包括 ...

  10. Python+Appium来写app自动化脚本

    1...........................我有空再补