OpenCV学习笔记(二)—— OpenCV整体结构

摘要:

        由于最近AR(增强现实)这个概念非常火爆,各种基于AR的应用及游戏逐渐面向大众,而在AR中最重要的两个技术就是跟踪识别增强渲染,其中跟踪识别是通过OpenCV这个开源的计算机视觉库来实现的,所以我就想着研究一下这个库,这里是个人的学习笔记,不是什么权威的教程,如果你们有错误也麻烦帮我指出哈。

=============================================分割线==================================================


前言:

    在具体学习OpenCV的具体功能块之前,我们先来看看OpenCV源码的整体框架,这样也能方便我们在后面的学习中获得更加清晰的思路。


一.文件结构:

    要了解整体框架,切入点在于opencv/build目录下的include文件夹,因为这下面包含了OpenCV源码所有的头文件。include下面有两个文件夹:opencv和opencv2:

    

    不难看出,opencv中存放的是旧版中保留的部分OpenCV的头文件,而opencv2中包含的则是改版之后的OpenCV2的各种头文件。


1.opencv文件目录:

    OpenCV学习笔记(二)—— OpenCV整体结构_第1张图片

2.opencv2文件目录:

    OpenCV学习笔记(二)—— OpenCV整体结构_第2张图片

    在这个文件夹下面,我们可以看到很多子文件目录,这些目录都是按照功能模块进行头文件整合,相同功能块的放在同一子目录下面,其中opencv_modules.hpp这个头文件中,定义了opencv2中所有模块的宏:

    OpenCV学习笔记(二)—— OpenCV整体结构_第3张图片


二、功能模块:

    上面的介绍中我们介绍文件结构的同时,其实也说到了opencv2中的每个子文件夹就对应一个功能模块,那么我们接下来就看看每个功能模块的具体作用,标红为最常用的库文件:

1.calib3d

    Calibration 3D,相机校准以及三维重建,包含:基本的多视角几何算法,单个立体摄像头标定,物体姿态估计,立体相似性算法,3D信息的重建等

2.core

    核心代码块,包含:OpenCV的基本数据结构、动态数据结构、绘图函数、数组操作相关函数、辅助功能与系统函数和宏,以及与OpenGL的交互操作

3.features2d

    2D功能框架,包含:特征检测和描述、特征检测器(Feature Detectors)通用接口、描述符提取器(Descriptor Extrators)通用接口、描述符匹配器(Descriptor Matchers)通用接口、通用描述符(Generic Descriptor )匹配器通用接口、关键点绘制函数和匹配功能绘制函数

4.flann

    Fast Library for Approximate Nearest Neighbors,高维的近似近邻快速搜索算法库,包含:快速近似最近领搜索和聚类

5.highgui

    高层GUI图形用户界面,包含:媒体的I/O输入输出、视频捕捉、图像和视频的编码解码、图形交互界面的接口等

6.imgcodecs

    

7.imgproc

    Image Processing,图形处理模块,包含:线性和非线性的图像滤波、图像的几何变换、其他图像变换、直方图相关、结构分析和形状描述、运动分析和对象跟踪特征检测、目标检测等

8.ml

    Machine Learning,机器学习模块,基本上就是统计模型和分类算法,包含:统计模型 (Statistical Models)、一般贝叶斯分类器 (Normal Bayes Classifier)、K-近邻 (K-NearestNeighbors)、支持向量机 (Support Vector Machines)、决策树 (Decision Trees)、提升(Boosting)、梯度提高树(Gradient Boosted Trees)、随机树 (Random Trees)、超随机树 (Extremely randomized trees)、期望最大化 (Expectation Maximization)、神经网络 (Neural Networks)、MLData

9.objdetect

    目标检测模块,包含:Cascade Classification(级联分类)和Latent SVM

10.photo

    Computational Photography,计算机摄影模块,包含:图像修复图像去噪

11.shape

    图形绘制模块

12.【stitching】

    Image stitching,图像拼接模块,包含:拼接流水线、特色寻找和匹配图像、估计旋转、自动校准、图片歪斜、接缝估测、曝光补偿、图片混合

13.【superres】


14.【video】

    视频分析模块,包含:运动估计、背景分离、对象跟踪

15.【videoio】

    视频输入输出控制模块

16.【videostab】

    Video stabilization,视频稳定模块,不常用


你可能感兴趣的:(OpenCV学习笔记(二)—— OpenCV整体结构)