《学习OpenCV》第4章细说HighGUI教程.pptxVIP

  1. 1、本文档共56页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《学习OpenCV》第4章细说HighGUI教程

第4章 细说HighGUI;;本章各小节目录;一个可移植的图形工具包;我们最初的观点是,OpenCV中的HighGUI可以分为3个部分:硬件相关部分、文件部分以及图形用户界面部分。在仔细研究HighGUI之前,我们先用一些时间分别浏览一下每部分的内容。 硬件部分最主要的就是对于摄像机的操作,在大多操作系统下,与摄像机交互是一件很复杂并且很痛苦的工作。HighGUI提供了一种从摄像机中获取图像的简单方法,所有繁琐的工作都在HighGUI内部完成了,这让我们很开心。 文件系统部分的主要工作就是载入与保存图像文件。HighGUI一个很好的特点就是可以用与读取摄像机视频相同的方法读入视频文件。这使得我们可以省去处理从各种特定设备中读入数据的麻烦,而专心于我们感兴趣的代码部分。同样地,HighGUI为我们提供了;一对函数来读入与保存图像,这两个函数根据文件名的后缀,自动处理所有编码和解码工作。 HighGUI的第三部分是窗口系统(或者称为GUI)。HighGUI提供了一些简单的函数用来打开窗口以及将图像显示在窗口中。它同时给我们提供了为窗口加入鼠标、键盘响应的方法。这些函数为我们快速建立一个简单的应用程序提供了很大的帮助。一种变通的方法,我们可以用滑动条实现切换功能。我们发现使用HighGUI可以实现很多实用的程序。 在本章后面的具体讲解中,我们不会对HighGUI的三个部分分别介绍;而是通过实现一些功能来讲解HighGUI。在这种方式下,你会以最快的速度了解到如何使用HighGUI。;创建窗口;需要留意的是参数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 ); 这里在宽度与高度是以像素为单位的,指定了窗口中可;以显示部分(这部分的大小可能才是真正关心的)的大小。;载入图像;情况下,图像是以每个通道8位,3个通道的形式被读入;可以通过设置CV_LOAD_IMAGE_ANYDEPTH来读入非8位的图像。默认情况下的通道为3,因为参数iscolor的默认值是CV_LOAD_IMAGE_COLOR,这意味着不管原始图像的通道数为多少,都将被转换为3个通道读入。相对于CV_LOAD_IMAGE_COLOR,iscolor也可以被设置成CV_LOAD_IMAGE_GRAYSCALE和CV_LOAD_IMAGE_ANYCOLOR。类似于CV_LOAD_IMAGE_COLOR将读入图像强制转换为3个通道,CV_LOAD_IMAGE_GRAYSCLAE将读入图像强制转换为单通道。CV_LOAD_IMAGE_ANYCOLOR则以保持原始图像通道数的方式读入。这样,为了读入16位的彩色图像,我们需要设置iscolor为CV_LOAD_IMAGE_COLOR|CV_LOAD_IMAGE_ANYDEPTH。;如果想读入数据与原始图像通道数以及位数保持一致,也可以使用CV_LOAD_IMAGE_UNCHAGNED。需要注意的是,当cvLoadImage()读入失败,并不会产生一个运行时错误,而是返回一个空指针。 与cvLoadImage()对应的函数是cvSaveImage(),实现了保存图像功能,cvSaveImage()有两个参数: int cvSaveImage(

文档评论(0)

shuwkb + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档