OpenCV主要的核心模块如下图所示,这些模块非常重要,下面将按照图片上的顺序对这些核心模块的作用进行简单的介绍,在我自己的电脑里,放在C:\Users\cyk6625\Downloads\opencv\build\include\opencv2路径下。
1、calib3d模块
它就是Calibration(校准)加3D这两个词的组合缩写。这个模块主要是相机校准和三维重建相关的内容。基本的多视角几何算法,单个立体摄像头标定,物体姿态估计,立体相似性算法,3D信息的重建等等。
相机标定用于去除相机自身缺陷导致的画面形变,还原真实的场景,确保计算的准确性。三维重建通常用在双目视觉(立体视觉),即两个标定后的摄像头观察同一个场景,通过计算两幅画面中的相关性来估算像素的深度。
2、contrib模块
它是Contributed/Experimental Stuf的缩写, 该模块包含了一些最近添加的不太稳定的可选功能,不用去关心。2.4.9里的这个模块有新型人脸识别,立体匹配,人工视网膜模型等技术。这些是一些开发者新贡献出来的尚不成熟的代码。
3、core模块
核心功能模块,包含如下内容:
(1)定义了基本的数据结构,包括最重要的 Mat 类、XML 读写、opengl三维渲染等;
(2)动态数据结构;
(3)绘图函数;
(4)数组操作相关函数;
(5)辅助功能与系统函数和宏;
(6)与OpenGL的互操作。
4、imgproc模块
它是Image和Processing这两个单词的缩写组合。也就是图像处理模块,是计算机视觉的重要工具,这个模块包含了如下内容:
(1)线性和非线性的图像滤波;
(2)图像的几何变换;
(3)其它(Miscellaneous)图像转换;
(4)直方图相关;
(5)结构分析和形状描述;
(6)运动分析和对象跟踪;
(7)特征检测;
(8)目标检测等内容。
5、features2d模块
二维特征检测与描述模块。它包含 2D 特征值检测的框架。包含各种特征值检测器及描述子,例如 FAST、MSER、OBRB、BRISK等。各类特征值拥有统一的算法接口,因此在不影响程序逻辑的情况下可以进行替换。可将该模块的内容概括如下:
(1)特征检测和描述;
(2)特征检测器(Feature Detectors)通用接口;
(3)描述符提取器(Descriptor Extractors)通用接口;
(4)描述符匹配器(Descriptor Matchers)通用接口;
(5)通用描述符(Generic Descriptor)匹配器通用接口;
(6)关键点绘制函数和匹配功能绘制函数。
6、flann模块
它是Fast Library for Approximate Nearest Neighbors的缩写,高维的近似近邻快速搜索算法库,用于在多维空间内聚类及搜索的近似算法,做图像检索的读者对它不会陌生。
7、gpu模块
它是运用GPU加速的计算机视觉模块,包含一些可以利用cuda进行加速的函数。
8、highgui模块
它是就是high gui的合写,即高层GUI图形用户界面,包含媒体的I/O输入输出,视频捕捉、图像和视频的编码解码、图形交互界面的接口等内容。
9、legacy模块
一些已经废弃的代码库,保留下来作为向下兼容,包含如下相关的内容:
(1)运动分析;
(2)期望最大化;
(3)直方图;
(4)平面细分(CAPI);
(5)特征检测和描述(Feature Detection and Description);
(6)描述符提取器(Descriptor Extractors)的通用接口;
(7)通用描述符(Generic Descriptor Matchers)的常用接口;
(8)匹配器。
10、ml模块
它是Machine Learning的缩写,即机器学习模块, 基本上是统计模型和分类算法,包含如下内容:
(1)统计模型 (Statistical Models);
(2)一般贝叶斯分类器 (Normal Bayes Classifier);
(3)K-近邻 (K-NearestNeighbors);
(4)支持向量机 (Support Vector Machines);
(5)决策树 (Decision Trees);
(6)提升方法(Boosting);
(7)梯度提高树(Gradient Boosted Trees);
(8)随机森林(Random Trees);
(9)超随机森林(Extremely randomized trees);
(10)期望最大化 (Expectation Maximization);
(11)神经网络 (Neural Networks);
(12)MLData。
11、nonfree模块
这是一些具有专利的算法模块 ,包含特征检测和GPU相关的内容。其中有SIFT和SURF,从功能上来说这两个算法属于features2d模块的,但由于它们都是受专利保护的,想在项目中可能需要专利方的许可。
12、objdetect模块
目标检测模块,包含Cascade Classification(级联分类)、Latent SVM、基于Haar特征或HBP特征(local binary patterns)特征的人脸检测和基于HOG(history of oriented gradient )特征的人体检测以及文字检测等。
13、ocl模块
即OpenCL-accelerated Computer Vision,是运用OpenCL加速的计算机视觉组件模块。
14、photo模块
它是Computational Photography的缩写,包含图像修复和图像去噪、HDR成像和非真实感渲染等。
15、stitching模块
images stitching,图像拼接模块,可制作全景图像,包含如下部分:
(1)拼接流水线;
(2)特点寻找和匹配图像;
(3)估计旋转;
(4)自动校准;
(5)图片歪斜;
(6)接缝估测;
(7)曝光补偿;
(8)图片混合。
16、superres模块
SuperResolution,超分辨率技术的相关功能模块,用于增强图像的分辨率。
17、ts模块
opencv测试相关代码,不用去关心。
18、video模块
视频分析模块,该模块包括运动估计,背景分离,对象跟踪、背景提取、光流跟踪、卡尔曼滤波等内容,做视频监控的读者会经常使用这个模块。
19、Videostab模块
Video stabilization,视频稳定相关的组件,用于解决相机移动时拍摄的视频不够稳定的问题。