一个可移植的图形工具包

尽管 OpenCV 设计为一个完整的应用程序的 API 接口,并且能被许多丰富的 UI 框架像 Qt, WinForms, Cocoa 等所使用,不需要自己的 UI 库,但是当我们只需要开发一个简单的小程序,而不需要使用大型的 UI 框架的时候,拥有一个简单并且独立的 UI 库就显得十分重要了,这就是 HighGUI 被设计出来的原因。

OpenCV 将与操作系统、文件系统和摄像机之类的硬件进行交互的一些函数纳入 HighGUI(high-level graphical user interface) 库中。有了 HighGUI,我们就可以方便的打开窗口、显示图像、读出或者写入图像相关的文件(包含图像和视频)、处理简单的鼠标、光标和键盘事件。我们也可以使用 HighGUI 创建其他一些很有用的控件,比如滑动条,并把他们加入窗口。如果对自己所使用的系统的图形用户界面非常熟悉,也许会认为 HighGUI 提过的很多功能是没有必要的,但即使如此,HighGUI 的跨平台型对你也会有很大的帮助。

我们最初的观点是,OpenCV 中的 HighGUI 可以分为 3 部分:硬件相关部分、文件部分以及图形用户界面部分。在仔细研究 HighGUI 之前,我们先用一些时间分别浏览一下每部分的内容。

硬件部分:主要工作是实现对摄像机的操作,在大多操作系统下,与摄像机交互是一件很复杂并且很痛苦的工作。HighGUI 提供了一种从摄像机中获取图像的简单方法,所有繁琐的工作都在 HighGUI 内部完成了,这让我们很开心。

文件系统部分:主要工作是载入与保存图像文件。HighGUI 一个很好的特点就是可以用于读取摄像机视频相同的方法读入视频文件。这使得我们可以省去处理从各种特定设备中读入数据的麻烦,而专心于我们感兴趣的代码部分。同样地,HighGUI 为我们提供了一对函数来读入与保存图像,这两个函数根据文件名的后缀,自动完成所有编码和解码工作。

用户界面部分:主要是实现对窗口的操作。HighGUI 提供了一些简单的函数用来打开窗口以及将图像显示在窗口中。它同时能给我们提供了为窗口加入鼠标、键盘相应的方法。这些函数为我们快速建立一个简单的应用程序提供了很大的帮助。一种变通的方式,我们可以用滑动条实现切换功能。我们发现使用 HighGUI 可以实现很多使用的程序。

在本章后面的具体讲解中,我们不会对 HighGUI 的三个部分分别介绍;而是通过实现一些功能来讲解 HighGUI 。在这种方式下,你会以最快的速度了解到如何使用 HighGUI。

results matching ""

    No results matching ""