OpenCV 3 的源代码文件夹:

3rdparty/: 包含第三方库,如用视频解码用的 ffmpeg、jpg、png、tiff 等图片的解码库。
apps/: 包含进行 Haar 分类器训练的工具,OpenCV 进行人脸检测便是基于 Haar 分类器。如果你想检测人脸以外的图片,千万不要错过这几个工具。
cmake/: 包含生成工程项目时 cmake 的依赖文件,用于只能搜索第三方库,普通开发者不需要关心这个文件夹的内容。
data/: 包含 OpenCV 库及范例中用到的资源文件,Haar 物体检测的分类器位于 haarcascades 子文件中。
doc/: 包含生成文档所需的源文件及辅助脚本。
include/: 包含入口头文件。OpenCV 子文件夹中是 C 语言风格的 API,也就是《学习 OpenCV》中描述的 API 函数,官方将逐渐淘汰 C 风格函数,因此我不推荐大家使用该文件夹中的头文件。OpenCV 2 子文件夹中只有一个 opencv.hpp 文件,这是 OpenCV 2 及 OpenCV 3 推荐使用的头文件。
modules/: 包含核心代码,OpenCV 真正的代码都在这个文件夹中。OpenCV 从 2.0 开始以模块的方式组织各种功能,近两年模块的数量增长得很快,后面我会依次介绍每个模块的作用。
platforms/: 包含交叉编译所需的工具链及额外的代码,交叉编译指的是在一个操作系统中编译供另一个系统使用的文件。
samples/: 这是大家最喜欢的范例文件夹,后面我也会进一步讲解。
CPU模块

androidcamera/: 仅用于 Android 平台,使得可以通过与其他平台相同的接口来控制 Android 设备的相机。
core/: 核心功能模块,定义了基本的数据结构,包括最重要的 Mat 类、XML 读写、OpenGL 三维渲染等。
imgproc/: 全称为 Image Processing,即图像处理,包括图像滤波、集合图像变换、直方图计算、形状描述子等。图像处理是计算机视觉的重要工具。
highgui/: 高级图形界面及多媒体文件读写,包括用户界面、Qt、对图像及视频文件的读写操作。
video/: 视频分析模块,包括背景提取、光流跟踪、卡尔曼滤波等,做视频监控的开发者会经常使用这个模块。
calib3d/: 相机标定及三维重建。相机标定用于取出相机自身缺陷导致的画面形变,还原真实的场景,确保计算的准确性。三维重建通常用在双目视觉(立体视觉),即两个标定后的摄像头观察同一个场景,通过计算两幅画面中的相关性来估计像素深度。
features2d/: 包含 2D 特征值检测的框架。包含各种特征值检测器及描述子,如 FAST、MSER、OBRB、BRISK 等。各类特征值拥有统一的算法接口,因此在不影响程序逻辑的情况下可以替换替换。
objdetect/: 物体检测模块,包括 Haar 分类器、SVM 检测器及文字检测。
ml/: 全称为 Machine Learning,即机器学习。包括统计模型、K 最近邻、支持向量机、决策树、神经网络等经典的机器学习算法。
flann/: 用于在多维空间内聚类及搜索的近似算法,做图像检索的开发者对它不会陌生。
photo/: 计算摄影学,包括图像修补、去噪、HDR 成像、非真实感渲染等。如果读者想实现 Photoshop 的高级功能,那么这个模块必不可少。
stitching:/ 图像拼接,可用于制作全景图。
nonfree/: 受专利保护的算法,包括 SIFT 和 SURF。从功能上来说,这两个算法属于 features2d 模块,但由于它们都是受专利保护的,相拥在项目中可能需要专利方的许可。
contrib:/ 包含新添加的实验性质的代码。开发者期待已久的人脸识别功能便位于这个模块内,名为 FaceRecognizer。
legacy/: 英文含义为遗产,即废弃已久的代码,官方不推荐使用这个模块中的功能。
optim/: 全称为 Optimization,这个模块包含通用的数值优化。包含线性规划等算法。
shape/: 形状匹配算法模块,用于描述形状、比较形状。
softcascade/: 另一种物体检测算法,Soft Cascade 分类器,包含检测模块和训练模块。
superres/: 全称为 Super Resolution,用于增强图像的分辨率。
videostab/: 全称为 Video Stabilization,用于解决相机移动拍摄时视频不够稳定的问题。
viz/: 三维可视化模块。可以认为这个模块实现了一个简单的三维可视化引擎,有各种 UI 空间和键盘、鼠标交互方式。底层实现基于 CTK 这个第三方库。
CUDA模块

这些模块的名称都以 cuda 开始,cuda 是显卡制造商 NVIDIA 推出的通用计算语言,在 OpenCV 3 中有大量的模块已经被移植到了 cuda 语言。让我们依次看一下。

cuda/: CUDA- 加速的计算机视觉算法,包括数据结构 cuda::GpuMat、基于 cuda 的相机标定及三维重建等。
cudaarithm/: CUDA- 加速的矩阵运算模块。
cudabgsegm/: CUDA- 加速的背景分割模块,通常用于视频监控。
cudacodec/: CUDA- 加速的视频编码与解码。
cudafeatures2d/: CUDA- 加速的特征检测与描述模块,与 features2d/ 模块功能类似。
cudafilters/: CUDA- 加速的图像滤波。
cudaimgproc/: CUDA- 加速的图像处理算法,包含直方图计算、霍夫变换等。
cudaoptflow/: CUDA- 加速的光流检测算法。
cudastereo/: CUDA- 加速的立体视觉匹配算法。
cudawarping/: 实现 CUDA- 加速的快速图像变换,包括透视变换、旋转、改变尺寸等。
samples/ 文件夹

android/: Android 平台的范例。既有完全是 Java 的工程,也有完全是 C++ 的工程,也有更为常见的 Java 与 C++ 共存的工程。
c/: 使用 C API 的范例。在 C API 逐渐退出历史舞台后,这个文件夹也应该会随之消失吧。
cpp/: 由于 OpenCV 是一款 C++ 库,因此 C++ 的返利是最多的,后面将重点介绍。
directx/: directx (d3d) 是微软的私有三维图像 API,这个文件夹中的范例覆盖了 d3d9、d3d10、d3d11.
gpu/: 利用 cuda 加速的范例。
java/: OpenCV 3 官方支持 Java 语言绑定,因此这里演示如何使用 Java 版本的 OpenCV。
python2/: OpenCV 3 官方支持 Python 语言绑定,因此这里演示使用 Python 2 版本的范例。
tapi/: tapi 是 OpenCV 3 的一个新特性,使用 cv::UMat 替代 cv::Mat,实现 CPU 和 GPU 的运算使用统一的接口,不再需要显式地在 CPU 和 GPU 之间传递数据,方便开发人员。
winrt/: Windows RT 平台的范例,开发语言是微软的 C++ “方言”.
samples/cpp/ 文件夹中的范例介绍

3calibration.cpp/: 同时标定三台水平放置的相机。
bagofwords_classification.cpp/: 使用图像检测实现简易的图像搜索功能。
bgfg_gmg.cpp/: 演示 GMG 背景检测算法的使用方式。
bgfg_segm.cpp/: 演示高斯混合背景检测算法的使用方式。
brief_match_test.cpp/: 使用 BRIEF 特征值来匹配两张图像。
build3dmodel.cpp/: 演示如何使用基础矩阵和特征值来创建三维模型。
calibration.cpp/: 完整的多用途标定程序。
calibration_artificial.cpp/: 在程序中生成一个虚拟的相机,并进行标定。

camshiftdemo.cpp/: 读取实时的摄像头数据,并演示基于均值偏移算法的视频跟踪。

chamfer.cpp/: 使用 Chamfer 算法匹配两副边缘图像。
cloning_demo.cpp/: 命令行模式的图像克隆。
cloning_gui.cpp/: 图形界面交互的图像克隆。
connected_components.cpp/: 查找并绘制图像中的连通区域。
contours2.cpp/: 查找并绘制图像中的轮廓。

convexhull.cpp/: 查找并绘制由点的集合组成的凸包。

cout_mat.cpp/: 使用 cout 来输出各种格式化的 Mat 对象。
create_mask.cpp/: 演示如何创建黑白掩码图像。
dbt_face_detection.cpp/: 基于检测的人脸跟踪代码。
delaunay2.cpp/: 通过鼠标交互式地生成 Delaunay 三角形。
demhist.cpp/: 演示直方图的用法。

descriptor_extractor_matcher.cpp/: 演示 features2d 检测框架的用法。

detection_based_tracker_sample.cpp/: 与 dbt_face_detection.cpp 类似。
detector_descriptor_evaluation.cpp/: 评估各种特征检测器和描述子。
detector_descriptor_matcher_evaluation.cpp/: 评估各种特征检测器和匹配器。
dft.cpp/: 演示一幅图像的离散傅里叶变换。
distrans.cpp/: 显示边缘图像的距离变换值。

drawing.cpp/: 演示绘画和文字显示功能。

edge.cpp/: 演示 Canny 边缘检测。
em.cpp/: 对随机生成的数据点进行 EM 聚类。
fabmap_sample.cpp/: 演示 FAB-MAP 图像检索算法。
facerec_demo.cpp/: 人脸识别。
fback.cpp/: 实时的 Farneback 光流跟踪。

ffilldemo.cpp/: 演示 floodFill() 像素填充算法。

filestorage.cpp/: 演示序列化到外部文件,如yml、xml等。
fitellipse.cpp/: 将轮廓点匹配到椭圆。
freak_demo.cpp/: 演示 FREAK 特征值的用法。
gencolors.cpp/: 演示 generateColors()。
generic_descriptor_match.cpp/: 基于 SURF 的两幅图像间的匹配。

grabcut.cpp/: 演示 GrabCut 分割算法。

houghcircles.cpp/: 用霍夫算法检测圆。
houghlines.cpp/: 用霍夫算法检测直线。
hybridtrackingsample.cpp/: 混合跟踪算法(Hybrid Tracker)的演示。
image.cpp/: 来回转换 cv::Mat 和 IplImage。
image_alignment.cpp/: 演示 findTransformECC() 函数。

image_sequence.cpp/: 使用 VideoCapture 对象读取序列帧。

imagelist_creator.cpp/: 创建图像列表到 xml 文件。
inpaint.cpp/: 使用鼠标交互地进行图像修补。
intelperc_capture.cpp/: Intel 感知计算设备相关的函数。
kalman.cpp/: 使用卡尔曼滤波进行二维跟踪。
kmeans.cpp/: Kmeans 聚类算法的演示。

laplace.cpp/: 拉普拉斯边缘检测。

latentsvm_multidetect.cpp/: latentSVM 检测器。
letter_recog.cpp/: 字母识别。

linemod.cpp/: 基于 OpenNI 的体感设备应用。

lkdemo.cpp/: 演示Lukas-Kanade 光流法。
logpolar_bsm.cpp/: 演示 LogPolar 盲点模型。

lsd_lines.cpp/: LSD 线段检测。

matcher_simple.cpp/: SURF 特征检测。
matching_to_many_images.cpp/: 一对多的特征检测。

meanshift_segmentation.cpp/: 演示基于均值漂移的色彩分割函数——meanShiftSegmentation()。

minarea.cpp/: 寻找最小包围盒、包围圆。
morphology2.cpp/: 形态学图像处理。

npr_demo.cpp/: 演示各种非真实感渲染效果。

opencv_version.cpp/: 输出 OpenCV 库的版本号。
openni_capture.cpp/: 演示 OpenNI 相关的体感设备。

pca.cpp/: 基于 PCA 的人脸识别。

peopledetect.cpp/: 基于 cascade 或 hog 进行物体(人)检测。
phase_corr.cpp/: 演示 phaseCorrelate() 函数。

points_classifier.cpp/: 演示各种机器学习算法。

rgbdodometry.cpp/: 对深度传感器如 Kinect 的数据进行处理。
segment_objects.cpp/: 实时地在视频或相机画面中检测前景物体。

shape_example.cpp/: 比较并检索形状。

shape_transformation.cpp/: 用 SURF 特征值检测形状并进行变换。
squares.cpp/: 检测图像中的方块形状。
starter_imagelist.cpp/: 一个 “hello worl” 性质的入门范例。
starter_video.cpp/: 另一个 “hello worl” 性质的入门范例。
stereo_calib.cpp/: 双目视觉的标定。

stereo_match.cpp/: 计算左右视觉的图像的差异,生成点云文件。

stitching.cpp/: 演示图像拼接算法。
stitching_detailed.cpp/: 演示更多参数的图像拼接算法。

textdetection.cpp/: 实时场景中的文字定位与识别。

train_HOG.cpp/: 训练 HOG 分类器。
ufacedetect.cpp/: 人脸检测。
video_homography.cpp/: 使用 FAST 特征值来跟踪平面物体。
videostab.cpp/: 演示 videostab 中各个参数的用法。
watershed.cpp/: 演示著名的分水岭图像分割算法。

参考文章:
https://blog.csdn.net/kaspar1992/article/details/53326431

opencv学习笔记—— opencv3 源码文件夹内容相关推荐

  1. Android源码文件夹结构

    Android 2.2 |-- Makefile |-- bionic               (bionic C库) |-- bootable            (启动引导相关代码) |-- ...

  2. Opencv学习笔记 - imread源码解读

    一.打开图片流程分析 1.读取图片头,进行解码器的寻找 2.根据参数flags,确定图像通道和是否缩放 3.给解码器指定缩放参数和源 4.使用解码器读取图像的头,确保没有问题,失败则输出错误并返回 5 ...

  3. java 源码哪个文件夹_JAVA项目——项目编译后的类路径和源码文件夹图解

    JAVA项目--项目编译后的类路径和源码文件夹图解 前言: 一定要很清楚哪个是源码文件夹,哪个是类路径以及类路径的形成机制. 项目编译后不同的源码文件夹会被合并到bin目录下,形成类路径.不同的源码文 ...

  4. Go 学习笔记(2)— 安装目录、工作区、源码文件和标准命令

    GOROOT: Go 语言安装根目录的路径,也就是 GO 语言的安装路径. GOPATH: 若干工作区目录的路径.是我们自己定义的工作空间.在 Go Module 模式之前非常重要,现在基本上用来存放 ...

  5. OpenCV学习笔记(一)——OpenCV3.1.0+VS2015开发环境配置

    摘要: 由于最近AR(增强现实)这个概念非常火爆,各种基于AR的应用及游戏逐渐面向大众,而在AR中最重要的两个技术就是跟踪识别和增强渲染,其中跟踪识别是通过OpenCV这个开源的计算机视觉库来实现的, ...

  6. OpenCV学习笔记(一):Win10(x64)+Qt5.8(MSVC2013)+OpenCV3.1.0配置过程

    OpenCV学习笔记(一):Win10(x64)+Qt5.8(MSVC2013)+OpenCV3.1.0配置过程 Win10(x64)+Qt5.8(MSVC2013)+OpenCV3.1.0配置过程 ...

  7. OpenCV学习笔记(三):图像对比度、亮度调整源码

    OpenCV学习笔记(三):图像对比度.亮度调整源码 主函数: #include <opencv2/opencv.hpp>using namespace cv;using namespac ...

  8. OpenCV学习笔记(三十一)——让demo在他人电脑跑起来 OpenCV学习笔记(三十二)——制作静态库的demo,没有dll也能hold住 OpenCV学习笔记(三十三)——用haar特征训练自己

    OpenCV学习笔记(三十一)--让demo在他人电脑跑起来 这一节的内容感觉比较土鳖.这从来就是一个老生常谈的问题.学MFC的时候就知道这个事情了,那时候记得老师强调多次,如果写的demo想在人家那 ...

  9. OpenCV学习笔记(十一)(十二)(十三)(十四)(十五)

    OpenCV学习笔记(十一)--谈谈像素的类型和对Templates的限制使用 Templates是c++的一个很强大的特征,可以是数据结构更加安全高效.但也会增加编译时间和代码的长度,当函数被频繁调 ...

最新文章

  1. webmagic 获取文本_WebMagic Selectable抽取元素
  2. 互联网协议 — SCTP 流控制传输协议
  3. 20154318_王秀飞 Exp2 后门原理与实践
  4. OpenSSH(ssh + scp)+Telnet
  5. POJ 1833 排列【STL/next_permutation】
  6. 10行代码AC——7-2 说反话-加强版 (20 分)——解题报告
  7. Mantis-如何自定义流程状态
  8. 我的域控是不是被攻击了?吓!
  9. android 检测网络ftp,Android端与Android端利用WIFI进行FTP通信
  10. ubuntu 1610本地安装wordpress
  11. Linux 命令(65)—— ld 命令
  12. 自学python考哪些证书-Python自学难吗?有哪些课程内容?
  13. 打不开网页但QQ能上网的解决办法
  14. pandas dataframe 如何把带有千位分隔符的字符串转化为浮点数
  15. 【脑电信号】基于matlab HMM睡眠状态检测【含Matlab源码 050期】
  16. android swap 大小,Android系统手动创建虚拟内存swap
  17. arduino编码器计数_基于Arduino开发环境的光电编码器检测仪设计方案
  18. java8新特性 函数式编程 Lamda
  19. centos yum 第三方仓库 scl 应用
  20. vue省市区三级联动(地区编码)

热门文章

  1. tp对接抖音sdk_Thinkphp集成抖音SDK的实现方法
  2. 计算机基础会计,基础会计中计算机技术的应用
  3. 2021年4月2日 星期五 农历二月 阴
  4. 代码审计工具简单汇总
  5. 交互设计、信息图、信息可视化、数据可视化技术资源汇总——设计师的领域,设计师说了算
  6. Q6:QIA一站式测试
  7. Visual Studio 2010 Win32 Usb HID 动态库创建
  8. 如何解决 Critical dependency: the request of a dependency is an expression ?
  9. 商标设计需要注意的要素
  10. SCQ16GS03M1F1C-32AA 紫光动态存储器