本节书摘来自华章计算机《OpenCV图像处理》一书中的第1章,第1.3节,作者:[西]葛罗瑞亚·布埃诺·加西亚(Gloria Bueno García)著,更多章节内容可以访问云栖社区“华章计算机”公众号查看
1.3 OpenCV的结构
一旦安装了OpenCV,在OPENCV_BUILDinstall目录中将加入三种类型的文件:
头文件:这些文件位于OPENCV_BUILDinstallinclude子目录下,用于使用OpenCV开发新项目。
库的二进制文件:这些文件是静态库或动态库(依赖于使用CMake对选项的选择),它们包含了每个OpenCV模块的功能。这些文件位于bin子目录下(例如,使用GNU编译器时,位于x64mingwbin)。
示例二进制文件:这些文件使示例在库下可执行。这些示例的源文件可以在源程序包中找到(例如,OPENCV_SRCsourcessamples)。
OpenCV有一个模块化结构,这意味着代码包中包含了每个模块的一个静态库或动态库(DLL)。包含在代码包中的主模块有:
core:这个模块定义了被所有其他模块和基本数据结构(包括重要的多维数组Mat)使用的基本函数。
highgui:这个模型提供简单的用户接口(user interface,UI)功能。使用Qt支持(WITH_QT CMake选项)建立的库允许UI和这样的框架兼容。
imgproc:这些模块是一些图像处理函数,包括滤波(线性的和非线性的)、几何变换、颜色空间变换、直方图等。
imgcodecs:这个模块是一个用于读、写图像的易用接口。
从OpenCV 3.0开始模块中的一些变化要注意,某些功能已经被移到一个新模块(例如,将读取图像函数和写入图像函数从highgui移入到imgcodecs)。
photo:这个模块包含计算摄影学,涉及修复、去噪、高动态范围(HDR)图像等。
stitching:这个模块用于图像拼接。
videoio:这个模块对于视频捕获和视频编码器是一个易用的接口。
video:这个模块提供了视频分析的功能(运动估计、背景提取以及对象跟踪)。
features2d:这些模块是用于特征检测(角点对象和平面对象)、特征描述、特征匹配等的一些函数。
objdetect:这些模块是用于对象检测和预定义检测器实例(例如,人脸、眼睛、微笑、人、车等)的一些函数。
其他的一些模块是calib3d(摄像机校准)、f?lann(聚类和搜索)、ml(机器学习)、shape(形状距离和匹配)、superres(超分辨率)、video(视频分析)和videostab(视频稳定)。
在3.0测试版中,新的贡献模块是在一个独立的包(opencv_contrib-master.zip)中发布的,在使用这些模块之前应该完全理解这些模块。在新发布的OpenCV(3.0版本)中,关于新功能的简要概述,请参考http://opencv.org/opencv-3-0-beta.html
文档。