摘要:

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

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

前言:

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

一.文件结构:

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

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

1.opencv文件目录:

2.opencv2文件目录:

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

二、功能模块:

上面的介绍中我们介绍文件结构的同时,其实也说到了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整体结构相关推荐

  1. OpenCV学习笔记#002 OpenCV相机检校例程运行

    OpenCV学习笔记#002 OpenCV相机检校例程运行 OpenCV学习笔记#002 OpenCV相机检校例程运行 所需文件 修改文件 修改in_VID5.xml 修改VID5.xml VS 设置 ...

  2. OpenCV学习笔记之OpenCV安装

    一.  Opencv的安装及配置 Qt有两种版本:mingw版本和MSVC版本.1.MSVC是指微软的VC编译器:2.MinGW是指是Minimalist GNU on Windows的缩写.它是一个 ...

  3. Opencv学习笔记之OpenCV介绍

    一.  OpenCV介绍 OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.它轻量级而且高效--由一系列 ...

  4. OpenCv学习笔记(二)--Mat矩阵(图像容器)的创建及CV_8UC1,CV_8UC2等参数详解

    (一)Mat矩阵(图像容器)创建时CV_8UC1,CV_8UC2等参数详解 1--Mat不但是一个非常有用的图像容器类,同时也是一个通用的矩阵类 2--创建一个Mat对象的方法很多,我们现在先看一下M ...

  5. opencv学习笔记二十一:使用HSV颜色空间实现颜色识别

    一.颜色空间介绍        RGB 颜色空间是大家最熟悉的颜色空间,即三基色空间,任何一种颜色都可以由该三种 颜色混合而成.然而一般对颜色空间的图像进行有效处理都是在 HSV 空间进行的,HSV( ...

  6. opencv学习笔记二十九:SIFT特征点检测与匹配

    SIFT(Scale-invariant feature transform)是一种检测局部特征的算法,该算法通过求一幅图中的特征点(interest points,or corner points) ...

  7. OpenCV学习笔记二

    图像的掩膜操作 #include<opencv2/opencv.hpp> #include<iostream>using namespace cv;int main(int a ...

  8. OpenCV学习笔记(12)——OpenCV中的轮廓

    什么是轮廓 找轮廓.绘制轮廓等 1.什么是轮廓 轮廓可看做将连续的点(连着边界)连在一起的曲线,具有相同的颜色和灰度.轮廓在形态分析和物体的检测和识别中很有用. 为了更加准确,要使用二值化图像.在寻找 ...

  9. Opencv学习笔记 - 关于OpenCV的UMat 类

    一个统一的抽象 cv::UMat 允许使用 CPU 或 OpenCL 代码实现相同的 API,而无需显式调用 OpenCL 加速版本.UMat类告诉 OpenCV 函数使用特定于 OpenCL 的代码 ...

  10. OpenCV学习笔记之Mat

    一. Mat介绍 在2001年刚刚出现的时候,OpenCV基于 C 语言接口而建.为了在内存(memory)中存放图像,当时采用名为 IplImage 的C语言结构体,时至今日这仍出现在大多数的旧版教 ...

最新文章

  1. 倒计时1天 | 2019 中国大数据技术大会(BDTC)报名通道即将关闭(附参会提醒)...
  2. ​利用卷积神经网络学习脑电地形图表示进行分类
  3. 高手勿入:不肝不氪,又能有参与证明的13个比赛活动来了
  4. Beyond Compare 3 设置自动换行
  5. .NET Core 3.0 中间件 Middleware
  6. 法国spin高等计算机学校,spin-去展网
  7. LeetCode 207. 课程表(广度优先遍历)
  8. SonarQube遇到的启动问题及解决方案
  9. enetics v1.5.0 绿色版
  10. CMD 命令 复制多级子目录特定文件
  11. Vue导出页面为PDF格式,解决PDF中图片不显示(跨域)
  12. zui消息推送服务器,ZUI
  13. 罗格斯大学电气与计算机工程专业怎么样,罗格斯大学电气与计算机工程硕士专业...
  14. 图文教程教您蓝底照片更换成白底和红底的方法
  15. C语言习题:输入10个学生5门课的成绩,分别用函数求:①每个学生平均分;②每门课的平均分;③找出所有分数中最高分
  16. tensorflow 学习笔记使用CNN做英文文本分类任务
  17. 经典蓝牙与低功耗蓝牙的区别
  18. springboot毕设项目电信CRM系统的设计与实现3z7u5(java+VUE+Mybatis+Maven+Mysql)
  19. numpy flatten函数
  20. 黑科技之机器人外骨骼

热门文章

  1. tf.greater()
  2. 主频和睿频有什么区别
  3. Mac PHP5.6安装
  4. Windows10环境下自己配置Pytracking详细流程(有参考博客)
  5. List逆向遍历、反向遍历--Iterator详解
  6. 如何使用docker容器中的redis
  7. 用什么软件记录学员考勤好?
  8. (下)开发一款微信小程序的个性简历,能打开大厂之门并获得门票?(附源码)
  9. 天河二号超级计算机能买到吗,天河二号计算机是巨型机吗
  10. PPPOE拨号691的问题