#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. CoreData(数据库升级 )版本迁移-iOS App升级安装

    版权声明:本文为博主原创文章,未经博主允许不得转载. 如果IOS App 使用到CoreData,并且在上一个版本上有数据库更新(新增表.字段等操作),那在覆盖安装程序时就要进行CoreData数据库 ...

  2. [luogu P1776] 宝物筛选 解题报告(单调队列优化DP)

    题目链接: https://www.luogu.org/problemnew/show/P1776 题目: 终于,破解了千年的难题.小FF找到了王室的宝物室,里面堆满了无数价值连城的宝物……这下小FF ...

  3. [JZOJ 5875] [NOIP2018提高组模拟9.20] 听我说,海蜗牛 解题报告(BFS+二分)

    题目链接: http://172.16.0.132/senior/#main/show/5875 题目: 题解: 注意这题只能经过开放的港口 我们考虑用vector存下每个点不能到的点,并把并让vec ...

  4. 滚动监听 after选择器

    一.如何实现滚动到一定位置将内容固定在页面顶部 window.onscroll=function(){ //滚动的距离,距离顶部的距离 var topScroll =document.body.scr ...

  5. MyBatis数据持久化(七)多表连接查询

    本节继续以多表连接查询的案例介绍使用resultMap的好处,对于两张以上的表进行关联查询,当我们有选择的从不同表查询所需字段时,使用resultMap是相当方便的.例如我们有两张表,分别为用户表Us ...

  6. 如何在Windows下安装Linux子系统(Ubuntu,openSUSU,SUSU Linux Server)

    注意:只有win10才能安装,安装的linux没有图形界面. 1.首先在win10设置 --> 更新与安装 --> 针对开发人员 ,选择开发人员模式. 2.win10 Cortana -- ...

  7. jq滚动条美化

    https://github.com/inuyaksa/jquery.nicescroll(插件地址) https://blog.csdn.net/zyy_0725/article/details/8 ...

  8. set集合关于set与set进行比较

    containsAll方法用来判断Set集合是否包含另一个集合中的全部内容. 语法  boolean containsAll(Collection<?> c) 返回值:如果Set集合包含参 ...

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

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

  10. vps上运行serv-u的问题

    为了给产品环境建个测试站,今天特意申请一个vps来做开发用,但运行了Serv-U的ServUDaemon.exe后始终提示: 响应: 530 User czhan cannot log in. 很无语 ...