- 1、本文档共56页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 细说HighGUI
本章各小节目录
一个可移植的图形工具包
创建窗口
载入图像
显示图像
视频的处理
ConvertImage函数
练习
一个可移植的图形工具包
OpenCV将与操作系统、文件系统和摄像机之类的硬件进行交互的一些函数纳入HighGUI(high-level graphical user interface)库中。有了HighGUI,我们可以方便地打开窗口、显示图像、读出或者写入图像相关的文件(包含图像与视频)、处理简单的鼠标、光标和键盘事件。我们也可以使用HighGUI创建其他一些很有用的空间,比如滑动条,并把它们加入窗口。如果对自己所使用的系统的图形用户界面非常熟悉,也许会认为HighGUI提供的很多功能是没有必要的,但即使如此,HighGUI的跨平台性对你也会有很大帮助。
我们最初的观点是,OpenCV中的HighGUI可以分为3个部分:硬件相关部分、文件部分以及图形用户界面部分。在仔细研究HighGUI之前,我们先用一些时间分别浏览一下每部分的内容。
硬件部分最主要的就是对于摄像机的操作,在大多操作系统下,与摄像机交互是一件很复杂并且很痛苦的工作。HighGUI提供了一种从摄像机中获取图像的简单方法,所有繁琐的工作都在HighGUI内部完成了,这让我们很开心。
文件系统部分的主要工作就是载入与保存图像文件。HighGUI一个很好的特点就是可以用与读取摄像机视频相同的方法读入视频文件。这使得我们可以省去处理从各种特定设备中读入数据的麻烦,而专心于我们感兴趣的代码部分。同样地,HighGUI为我们提供了
一对函数来读入与保存图像,这两个函数根据文件名的后缀,自动处理所有编码和解码工作。
HighGUI的第三部分是窗口系统(或者称为GUI)。HighGUI提供了一些简单的函数用来打开窗口以及将图像显示在窗口中。它同时给我们提供了为窗口加入鼠标、键盘响应的方法。这些函数为我们快速建立一个简单的应用程序提供了很大的帮助。一种变通的方法,我们可以用滑动条实现切换功能。我们发现使用HighGUI可以实现很多实用的程序。
在本章后面的具体讲解中,我们不会对HighGUI的三个部分分别介绍;而是通过实现一些功能来讲解HighGUI。在这种方式下,你会以最快的速度了解到如何使用HighGUI。
创建窗口
首先,我们要做的是利用HighGUI将一幅图像显示到屏幕上。我们使用cvNameWindow()来实现这个功能。这个函数接受两个参数,第一个参数用来表示新窗口的名称,这个名称显示在窗口的顶部,同时用作HighGUI中其他函数调用窗口的句柄。第二个参数是一个标志,用来表示是否需要使窗口大小自动适应读入的图像大小。下面是这个函数的定义:
int cvNamedWindow(
const char* name,
int flags = CV_WINDOW_AUTOSIZE
);
需要留意的是参数flags,到目前为止,唯一有效的设置是0或者保持默认设置CV_WINDOW_AUTOSIZE。如果使用CV_WINDOW_AUTOSIZE,HighGUI会根据图像的大小调整窗口大小。这样,窗口大小会随着图像的载入而根据图像大小调整,用户没办法手动调整窗口大小。当然,如果不想窗口大小自动调整,也可以将参数值设置为0,这样的话,用户就可以随意调整窗口的大小了。
当窗口被创建以后,我们通常是想加入一些东西到里面。不要着急,在做这些事情之前,我们先看看当不需要这些窗口时,如何释放它们。为了释放窗口,我们需要使用cvDestroryWindow(),这个函数接收一个字符串参数,这个字符串是窗口创建时所指定的名字。
在OpenCV中,窗口根据名称来引用(操作系统独立的)而不是一些“不友好”的句柄。句柄与窗口名称之间的转换都由HighGUI在后台处理,我们不用为这些问
题操心。
话虽如此,还是有些人担心HighGUI内部的处理,那没关系。HighGUI提供了以下函数:
void* cvGetWindowHandle(const char* name);
const char* cvGetWindowName(void* window_handle);
这些函数允许我们在OpenCV所使用的窗口名称与各个窗口系统所使用的窗口句柄之间进行转换。
HighGUI提供了cvResizeWindow()用来调整窗口的大小:
void cvResizeWindow(
const char* name,
int width,
int height
);
这里在宽度与高度是以像素为单位的,指定了窗口中可
以显示部分(这部分的大小可能才是真正关心的)的大小。
载入图像
为了在窗口中显示图像,我们需要了解如何从磁盘中载入图像。OpenCV为我
您可能关注的文档
- 《微小世界和我们》讲述.ppt
- 《为中华崛起而读书》课件2讲述.ppt
- 《伟人细胞》讲述.ppt
- 【创新设计】2014-2015高中物理1.6速度变化快慢的描述—加速度(第2课时)教科版必修1讲述.doc
- 世界第一高桥合龙讲述.docx
- 【创新设计】2015-2016学年高中物理5.2描述交变电流的物理量课时作业新人教版选修3-2讲述.doc
- 【创新设计】2015-2016学年高中语文第10课赤壁赋课时作业语文版必修1讲述.doc
- 世界顶级企业—日本电装的精益和装备自制讲述.docx
- 《位似》课件2讲述.ppt
- 1.职业行动能力与教学讲解.ppt
- 2025中国冶金地质总局所属在京单位高校毕业生招聘23人笔试参考题库附带答案详解.doc
- 2025年01月中国人民大学文学院公开招聘1人笔试历年典型考题(历年真题考点)解题思路附带答案详解.doc
- 2024黑龙江省农业投资集团有限公司权属企业市场化选聘10人笔试参考题库附带答案详解.pdf
- 2025汇明光电秋招提前批开启笔试参考题库附带答案详解.pdf
- 2024中国能建葛洲坝集团审计部公开招聘1人笔试参考题库附带答案详解.pdf
- 2024吉林省水工局集团竞聘上岗7人笔试参考题库附带答案详解.pdf
- 2024首发(河北)物流有限公司公开招聘工作人员笔试参考题库附带答案详解.pdf
- 2023国家电投海南公司所属单位社会招聘笔试参考题库附带答案详解.pdf
- 2024湖南怀化会同县供水有限责任公司招聘9人笔试参考题库附带答案详解.pdf
- 2025上海烟草机械有限责任公司招聘22人笔试参考题库附带答案详解.pdf
文档评论(0)