引言
本节主要介绍OpenCV中C语言版(OpenCV2.0以下)和C++语言版(OpenCV2.2以上)各模块功能,以及构架图。
OpenCV模块
首先,我们介绍1.0至2,2版,OpenCV库划分为以下几个模块。
图1 OpenCV1.X库模块
- CV : 主要OpenCV函数,即:核心函数库
- CVAUX : 辅助函数库
- CXCORE : 数据结构与线性代数库(包含CvPoint、CvRect、CvSize、CvMat及lpiImage等常用数据结构);
- HIGHUI : GUI函数库(用户交互界面,如图像显示、接受鼠标键盘事件等。已经包含视频、摄像头简单操作);
- ML : 机器学习函数库,包含模式分类和回归分析等;
- CVCAM :视频图像处理模块(一般还需要安装DirectShow。此模块在2.0之后的版本好像不再包含,而直接使用highgui)。
在windows下较低版本(2.0以下)的OpenCV中包含此模块,一般用于处理和操作摄像头和视频流的跨平台模块,在windows下 被封装成.dll动态链接库,在Linux中被以so(共享库,和动态链接库类似)的形式使用。
然而,自从2.2版开始,OpenCV库便被划分为多个模块。这些模块编译成库文件后,位于lib文件夹中。
图2 OpenCV2.X库模块
- opencv_core模块,其中包括库中核心函数结构,特别是基础的数据结构和算术函数。
- opencv_imgproc模块,包含图像处理函数。
- opencv_highgui模块,包含读写图像及视频的函数,以及操作图形用户界面函数。
- opencv_features2d模块,包含兴趣点检测子、描述子以及兴趣点匹配框架。
- opencv_calib3d模块,包含相机标定、双目几何估算以及立体视觉函数。
- opencv_video模块,包含运动估算、特征跟踪以及前景提取函数与类。
- opencv_objdetect模块,包括物体检测函数,如脸部与行人检测。
库中还有其他的工具模块,如机器学习(opencv_ml)、计算几何(opencv_flann),第三方代码 (opencv_contrib),废弃的代码 (opencv_legacy)及GPU加速度过的代码 (opencv_gpu).这些模块都有一个单独的头文件(位于include)。
OpenCV2.X架构图
如下图所示:
参考资料
[1] Robert Laganiere ,"OpenCV 2 Computer Vision Application Programming Cookbook",Packt Publishing 2011.
关于Image Engineering & Computer Vision的更多讨论与交流,敬请关注本博客和新浪微博songzi_tea.