本教程中,我们假定 C++ 是图像处理应用编程的主要语言,尽管实际上也提供了其他编程语言的接口和封装器(例如,Python、Java、MATLAB/Octave 等)。
本节说明如何用 OpenCV 的 C++API(一种易用的跨平台框架)开发应用。
为了用 C++ 开发一个 OpenCV 应用,需要在代码中:
OpenCV 头文件位于 OPENCV_BUILD\install\include\opencv2
目录中,此处对于每个模块都有一个文件(*.hpp)。用 #include 指令包含头文件,如下所示:
//在代码中包含所使用的每个模块的头文件
#include <opencv2/<module_name>/<module_name>.hpp>
用这个指令,可以包含用户程序所需的每个头文件。另一方面,如果包含 opencv.hpp 头文件,那么所有的头文件都将被自动包含,如下所示:
//在代码中包含所有的Opencv头文件
#include <opencv2/opencv.hpp>
注意,本地安装的所有模块都在 OPENCV_BUILD\install\include\opencv2\opencv_modules.hpp
头文件中定义,并在 OpenCV 的构建过程中自动生成。
#include 指令的使用并非总能保证对头文件的正确包含,因为告诉编译器在哪里能找到包含文件是有必要的。这一点可以通过传递具有文件位置的一个特殊参数来实现(例如,对于 GNU 编译器为 I\<location>)。
链接过程需要提供(动态或静态)链接库,在这里可以找到所需的 OpenCV 功能。这个过程通常用链接器的两种类型参数完成:库的位置(例如,GNU 编译器的 -L\<location>)和库的名字(例如,-l<module_name>)。
在 https://gcc.gnu.org/onlinedocs/ 和 https://www.gnu.org/software/make/manual/ 下,可以找到对于 GNU GCC 和 Make 可用的在线文档的一个完整列表。
开发我们自己的 OpenCV C++ 应用的主要先决条件是:
对于编写 OpenCV C++ 应用,最流行的可用编译工具包是:
对于本书提供的示例,我们为 Windows+Qt 5.2.1 库和 Qt 生成器 IDE(3.0.1)使用 MinGW 4.8 编译工具包。编译 OpenCV 需要跨平台 Qt 库所提供的新 UI 功能。
注意,对于 Windows,可以从 http://qt-project.org/ 下载一个 Qt 包(包括 Qt 库、Qt 生成器和 MinGW 工具包)。这个包大约 700MB。
Qt 生成器是一个针对 C++ 的跨平台 IDE,它集成了我们编写应用时所需的工具。在 Windows 中,可以使用 MinGW 或 MSVC。图 1 展示了对于一个 OpenCV C++ 项目具有不同的面板和视图的 Qt 生成器的主窗口。