HighGUI图形图像界面初步—— 图像的载入、显示与输出
HighGUI模块为高层GUI图形用户界面模块,包含媒体的输入输出、视频捕捉、图像和视频的编解码、图形交互界面的接口等。
在本章中,我们将学到:
- 图像的载入、显示和输出到文件的详细分析
- 滑动条的创建和使用
- OpenCV中的鼠标操作
1、图像的载入与显示概述
在新版的opencv2中,最简单的图像载入和显示只需两句代码,非常便捷。这两个行代码分别对应两个函数:imread()和imwrite()。
1.1 图像的载入:imread()函数
Mat imread(const string& filename, int flags = 1);
参数说明:
(1)第一各参数:图片路径+图片名。OpenCV的imread函数支持如下类型的图像载入。
Windows位图:*.bmp, *.dib
JPEG文件:*.jpeg, *.jpg, *.jpe
JPEG2000文件:*.jp2
PNG图片:*.png
便携文件格式:*.pbm, *.pgm, *.ppm
Sun raters光栅文件:*.sr, *.ras
TIFF文件:*.tiff, *,tif
(2)第二个参数:载入标识符。它指定了加载图像的颜色类型,默认值为1。这个参数可以在OpenCV中表示图像格式的枚举体中取值。
CV_LOAD_IMAGE_UNCHANGED —— 等价取值-1,这个标识在新版中已经废置,忽略。
CV_LOAD_IMAGE_GRAYSCALE —— 等价于取值0,始终将图像转换为灰度再返回。
CV_LOAD_IMAGE_COLOR —— 等价取值1,总是讲图像转换成彩色再返回。
CV_LOAD_IMAGE_ANYDEPTH —— 等价取值2,如果去这个标识,且载入图像深度为16位或者32位,则返回对应深度图像,否则转为8位图像再返回。
CV_LOAD_IMAGE_ANYCOLOR -—— 等价取值4。
对于参数 flags,如果我们不在枚举体中取值,那么可以这样进行:
flags>0返回三个通道的彩色图像
flags=0返回灰度图像
flags<0返回包含Alpha通道的加载图像
1.2 图像的显示:imshow()函数
void imshow(const string & windowname, InputArray mat);
参数说明:
第一个参数:窗口名称
第二个参数:需要显示的图像,Mat类型。
如果窗口使用CV_WINDOW_AUTOSIZE标志创建,那么显示图像原始大小。
否则按照图像的深度进行缩放,具体如下:
载入图像类型 | 显示大小
8-bit unsigned | 原样输出
16-bit unsigned | 使用像素值除以256,也就是值得范围是[0,255x256]映射到[0,255]
32-bit unsigned | 同上
32-bit float point | 像素要乘以255,也就是范围[0,1]映射到[0,255]
如果设定了支持OpenGL(WINDOW_OPENGL),那么imshow还支持ogl::Buffer、ogl::Texture2D以及gpu::GpuMat作为输入。
2、关于InputArray类型
很多时候,我们遇到函数原型中的InputArray/OutputArray类型,只需要简单地转为Mat类型即可。
3、创建窗口:namedWindow()函数
如果只是简单地显示图像,我们可以不用创建窗口,直接在imshow函数中给出窗口名称即可。
但是我们后续学习到的滑动条的使用,要制定滑动条依附到那个窗口上,这时候就要给出窗口的实例。
namedWindow()函数原型:
void nameWindow(const string & winname, int flags=WINDOW_AUTOSIZE);
参数说明:
第一个参数:窗口名称
第二个参数:窗口标识符。可以填一下集中取值。
WINDOW_NORMAL,用户可以改变窗口大小。
WINDOW_AUTOSIZE,窗口大小会自动调整以适应所显示的图像,用户不能手动修改图像大小。
WINDOW_OPENGL,设置后窗口会支持OpenGL。
以上三个标识符,是在OpenCV1中,如果在OpenCV2中,那么需要加前缀CV_:
CV_WINDOW_NORMAL
CV_WINDOW_AUTOSIZE
CV_WINDOW_OPENGL
4、输出图像到文件:imwrite()函数
bool imwrite(const string& filename, InputAaary img, const vector<int> ¶ms=vector<int>() );
参数说明:
(1)第一个参数,需要写入的目标文件名,需要带上后缀。
(2)第二个参数,InputArray类型图像,一般填一个Mat类型图像数据。
(3)第三个参数,表示为特定格式保存的参数编码,默认不用填。如果填的话,下面需要了解的地方。
对于JPEG格式图片,这个参数表示从0到100的图片质量(CV_IMWRITE_JPEG_QUALITY),默认值是95.
对于PNG格式图片,表示压缩级别(CV_IMWRITE_PNG_COMPRESSION)从0到9,较高的值意味着更小的尺寸和更长的压缩时间,默认为3.
对于PPM, PGM, 或者PBM格式的图片,表示一个二进制格式标志(CV_IMWRITE_PXM_BINARY),取值为0或者1,默认为1.
HighGUI图形图像界面初步—— 图像的载入、显示与输出的更多相关文章
- HighGUI图形图像界面初步——滑动条的创建和使用
---恢复内容开始--- 滑动条是OpenCV动态调节参数特别好用的一种工具,它依附于窗口而存在.由于OpenCV没有实现按钮功能,所以很多时候,我们可以用仅含0-1的滑动条来实现按钮的按下于弹起效果 ...
- HighGUI图形图像界面初步——鼠标操作
OpenCV中的鼠标操作和滑动条的消息映射方式很类似,都是通过一个中介函数配合一个回调函数来实现的,创建和指定滑动条回调函数为createTrackbar, 而指定鼠标操作消息回调函数的函数为setM ...
- opencv 1 HighGUI图形用户界面初步
1图像载入 显示和输出到文件 Opencv的命名空间 Mat类 图像的载入:imread()函数 图片的显示:imshow()函数 创建窗口:namedWindow()函数 输出图像到文件:imwri ...
- opencv学习HighGUI图形用户界面初步【1】
HighGUI是图形用户界面模块.包括:1.输入与输出:2.视频捕捉:3.图形和视频的解码编码:4.图形交界面与接口. 由于opencv.hpp包含了core.objdetect.ingproc.ph ...
- 学习 opencv---(2) 图像的载入,显示和输出
了解过之前老版本OpenCV的童鞋们都应该清楚,对于OpenCV1.0时代的基于 C 语言接口而建的图像存储格式IplImage*,如果在退出前忘记release掉的话,就会照成内存泄露.而且用起来超 ...
- 以小时候玩的贪吃蛇为例,对于Java图像界面的学习感悟
简介 正文 01.JFrame是啥? 02.JPanel 03. KeyListener 04.Runnable 05.游戏Running 06.游戏初始类编写 07.main 简介: 一直以来用代码 ...
- 【OpenCV入门教程之三】 图像的载入,显示和输出 一站式完全解析(转)
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/20537737 作者:毛星云(浅墨) ...
- xp主机用VMware9和10安装Ubuntu12.04后无法进入图像界面
xp主机用VMware9和10安装Ubuntu12.04后无法进入图像界面 备注:虚拟机安装Ubuntu12.04 64位版本 刚开始我用VMware-workstation-full-8.0.3来安 ...
- OpenCV——图像的载入、显示、输出到文件和滑动条、鼠标操作
图像的载入.显示.输出到文件和滑动条 滑动条 示例: 鼠标操作
随机推荐
- ssh免秘钥登录
简介 SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:SSH 为建立在应用层基础上的安全协议.SSH 是目前较可靠,专为远程 ...
- oracle游标的知识点
游标: 就是一个结果集(ResultSet) 游标语法: CURSOR 光标名 [(参数名 数据类型[,参数名 数据类型])] IS SELECT 语句; eg. cursor c1 is selec ...
- History对象和location对象
history对象 History对象包含用户在浏览器窗口中访问过的url.不是所有浏览器都支持该对象. 属性length 返回浏览器历史列表中的URL数量. 方法:back() 加载histor ...
- 使用Z3破解简单的XOR加密
使用Z3破解简单的XOR加密 翻译:无名侠 原文地址: https://yurichev.com/blog/XOR_Z3/ 如果我们有一段用简单XOR加密过的文本,怎么寻找密钥呢?密钥的长度可能很长, ...
- java线程池原理及实现方式
线程池的定义 线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务.线程池线程都是后台线程 为什么要使用线程池 1.减少在创建和销毁线程上所花的时间以及系统资源的开 ...
- react native 常用组件汇总
react-native-uploader //文件上传https://github.com/aroth/react-native-uploader jpush-react-native //官方版本 ...
- SQL Server 文件操作
在master数据库中,SQL Server提供系统扩展的存储过程,其中有一些存储过程的命名以xp_开头,用于处理操作系统的文件. 一,判断文件是否存在 存储过程sys.xp_fileexist 用于 ...
- 关于 IO的同步异步间要描述
IO在计算机中指Input/Output,也就是输入和输出.由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘.网络等,就需要IO接口. 比如你打开 ...
- MarkDown 编辑数学公式
1. 参考博客:http://blog.csdn.net/smstong/article/details/44340637 1 数学公式的web解决方案 在网页上显示漂亮的数学公式,是多年来数学工作者 ...
- CentOS下安装XAMPP详细教程(转)
[原文]http://blog.csdn.net/hel12he/article/details/49781813 现在PHP的集成运行环境越来越多,个人比较喜欢XAMPP,更新速度快,好用,安装便捷 ...