《学习OpenCV》第4章细说HighGUI讲述.pptx

  1. 1、本文档共56页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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为我

您可能关注的文档

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档