OPENCV之头文件分析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[flann]: Fast Library for Approximate Nearest Neighbors,高维的近似近邻 快速搜索算法库, 包含两个部分:快速近似最近邻搜索和聚类
[gpu]: 运用 GPU 加速的计算机视觉模块
[highgui]: 也就是 high gui,高层 GUI 图形用户界面,包含媒体的 I / O 输入输出, 视频捕捉、图像和视频的编码解码、图形交互界面的接口等内容
[legacy]: 一些已经废弃的代码库,保留下来作为向下兼容,包含如下相关的内容
运动分析 期望最大化 直方图 平面细分(C API) 特征检测和描述(Feature Detection and Description) 描述符提取器(Descriptor Extractors)的通用接口 通用描述符(Generic Descriptor Matchers)的常用接口 匹配器
cv.hpp 中包含头文件:
#include <cv.h> 也就是说 cv.hpp 是包含 cv.h 的,程序中凡用到 cv.h 的地方都可以用 cv.hpp 替
换,那么为什么又要设置 hpp 文件呢?hpp 是 Header Plus Plus 的简写,与 *.h 文件类似。 但与之不同的是,*.hpp 将*.cpp 中的实现代码也写入其中,使得定义与实现都包含在同一 文件中。这样做带来的好处显而易见,无需再将 cpp 文件添加到项目中编译,减少了编译次 数,也不用发布烦人的 lib,dll 文件,因此非常适合用来编写公用的开源库。
#define HAVE_OPENCV_FLANN #define HAVE_OPENCV_GPU #define HAVE_OPENCV_HIGHGUI #define HAVE_OPENCV_IMGPROC #define HAVE_OPENCV_LEGACY #define HAVE_OPENCV_ML #define HAVE_OPENCV_NONFREE #define HAVE_OPENCV_OBJDETECT #define HAVE_OPENCV_OCL #define HAVE_OPENCV_PHOTO #define HAVE_OPENCV_STITCHING #define HAVE_OPENCV_SUPERRES #define HAVE_OPENCV_TS #define HAVE_OPENCV_VIDEO #define HAVE_OPENCV_VIDEOSTAB
[photo]: 也就是 Computational Photography,包含图像修复和图像去噪两部分
[stitching]: images stitching,图像拼接模块,包含如下部分:
拼接流水线 特点寻找和匹配图像 估计旋转 自动校准 图片歪斜 接缝估测 曝光补偿 图片混合
[superres]: SuperResolution,超分辨率技术的相关功能模块
[core]: 核心功能模块,包含如下内容
OpenCV 基本数据结构 动态数据结构 绘图函数 数组操作相关函数 辅助功能与系统函数和宏 与 OpenGL 的互操作
[imgproc]: Image 和 Processing 这两个单词的缩写组合。图像处理模块,这个模 块包含了如下内容
线性和非线性的图像滤波
其解释如下:
[calib3d]: 其实就是就是 Calibration(校准)加 3D 这两个词的组合缩写。这个模 块主要是相机校准和三维重建相关的内容。基本的多视角几何算法,单个立体摄像头 标定,物体姿态估计,立体相似性算法,3D 信息的重建等等。
[contrib]:也就是 Contributed/Experimental Stuf 的缩写, 该模块包含了一些最近 添加的不太稳定的可选功能,不用去多管。2.4.10 里的这个模块有新型人脸识别, 立体匹配 ,人工视网膜模型等技术。
文件夹 opencv 中的头文件都是类似的,均包含文件夹 opencv2 里的头文件。所 以我们如果是从低版本的 opencv 学习过渡到高版本的 opencv 的话,如果不适应可以先以 o
百度文库
pencv 文件夹里的文件调用为标准。如果熟悉 opencv 里的函数分布,也可以直接调用 open cv2 文件夹里的具体头文件,这样在头文件预编译提高效率。
图像的几何变换
其它(Miscellaneous)图像转换 直方图相关 结构分析和形状描述 运动分析和对象跟踪 特征检测 目标检测等内容
[features2d]: 也就是 Features2D, 2D 功能框架 ,包含如下内容
特征检测和描述 特征检测器(Feature Detectors)通用接口 描述符提取器(Descriptor Extractors)通用接口 描述符匹配器(Descriptor Matchers)通用接口 通用描述符(Generic Descriptor)匹配器通用接口 关键点绘制函数和匹配功能绘制函数
[nonfree]: 也就是一些具有专利的算法模块 ,包含特征检测和 GPU 相关的内容。 最好不要商用,可能会被告哦。
[objdetect]: 目标检测模块,包含 Cascade Classification(级联分类)和 Latent SVM 这两个部分。
[ocl]: 即 OpenCL-accelerated Computer Vision,运用 OpenCL 加速的计算机视觉组 件模块
[ts]:opencv 测试相关代码,不用去管他
[video]: 视频分析组件
该模块包括运动估计,背景分离,对象跟踪等视频处理相关内容 [Videostab]: Video stabilization,视频稳定相关的组件 3、参考文献 [1] http://www.it165.net/pro/html/201404/12370.html(本文中绝大部分内容出 自此博客) [2] http://baike.baidu.com/item/HPP?fr=aladdin
2、接下来看文件夹 opencv2 中的文件
先看 opencv.hpp 文件: #include "opencv2/core/core_c.h" #include "opencv2/core/core.hpp" #include "opencv2/flann/miniflann.hpp" #include "opencv2/imgproc/imgproc_c.h" #include "opencv2/imgproc/imgproc.hpp" #include "opencv2/photo/photo.hpp" #include "opencv2/video/video.hpp" #include "opencv2/features2d/features2d.hpp" #include "opencv2/objdetect/objdetect.hpp" #include "opencv2/calib3d/calib3d.hpp" #include "opencv2/ml/ml.hpp" #include "opencv2/highgui/highgui_c.h" #include "opencv2/highgui/highgui.hpp" #include "opencv2/contrib/contrib.hpp" 很明显 opencv.hpp 的头文件包含了 opencv 库里的所有头文件。 接着看 opencv_modules.hpp 文件: #define HAVE_OPENCV_CALIB3D #define HAVE_OPENCV_CONTRIB #define HAVE_OPENCV_CORE #define HAVE_OPENCV_FEATURES2D
[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
openCV 之头文件分析
我们利用 openCV 开源库进行项目开发时,往往要牵涉到头文件的添加问题,而 o penCV 中头文件众多,该如何选择呢?下面对 openCV2.4.10 的头文件进行一个简单的梳理, 以便能够快速的添加对应的头文件。
1、首先看下 opencv 文件夹中的头文件
其中 cv.h 中包含的头文件: #include "opencv2/core/core_c.h" #include "opencv2/core/core.hpp" #include "opencv2/imgproc/imgproc_c.h" #include "opencv2/imgproc/imgproc.hpp" #include "opencv2/video/tracking.hpp" #include "opencv2/features2d/features2d.hpp" #include "opencv2/flann/flann.hpp" #include "opencv2/calib3d/calib3d.hpp" #include "opencv2/objdetect/objdetect.hpp" #include "opencv2/legacy/compat.hpp"
[gpu]: 运用 GPU 加速的计算机视觉模块
[highgui]: 也就是 high gui,高层 GUI 图形用户界面,包含媒体的 I / O 输入输出, 视频捕捉、图像和视频的编码解码、图形交互界面的接口等内容
[legacy]: 一些已经废弃的代码库,保留下来作为向下兼容,包含如下相关的内容
运动分析 期望最大化 直方图 平面细分(C API) 特征检测和描述(Feature Detection and Description) 描述符提取器(Descriptor Extractors)的通用接口 通用描述符(Generic Descriptor Matchers)的常用接口 匹配器
cv.hpp 中包含头文件:
#include <cv.h> 也就是说 cv.hpp 是包含 cv.h 的,程序中凡用到 cv.h 的地方都可以用 cv.hpp 替
换,那么为什么又要设置 hpp 文件呢?hpp 是 Header Plus Plus 的简写,与 *.h 文件类似。 但与之不同的是,*.hpp 将*.cpp 中的实现代码也写入其中,使得定义与实现都包含在同一 文件中。这样做带来的好处显而易见,无需再将 cpp 文件添加到项目中编译,减少了编译次 数,也不用发布烦人的 lib,dll 文件,因此非常适合用来编写公用的开源库。
#define HAVE_OPENCV_FLANN #define HAVE_OPENCV_GPU #define HAVE_OPENCV_HIGHGUI #define HAVE_OPENCV_IMGPROC #define HAVE_OPENCV_LEGACY #define HAVE_OPENCV_ML #define HAVE_OPENCV_NONFREE #define HAVE_OPENCV_OBJDETECT #define HAVE_OPENCV_OCL #define HAVE_OPENCV_PHOTO #define HAVE_OPENCV_STITCHING #define HAVE_OPENCV_SUPERRES #define HAVE_OPENCV_TS #define HAVE_OPENCV_VIDEO #define HAVE_OPENCV_VIDEOSTAB
[photo]: 也就是 Computational Photography,包含图像修复和图像去噪两部分
[stitching]: images stitching,图像拼接模块,包含如下部分:
拼接流水线 特点寻找和匹配图像 估计旋转 自动校准 图片歪斜 接缝估测 曝光补偿 图片混合
[superres]: SuperResolution,超分辨率技术的相关功能模块
[core]: 核心功能模块,包含如下内容
OpenCV 基本数据结构 动态数据结构 绘图函数 数组操作相关函数 辅助功能与系统函数和宏 与 OpenGL 的互操作
[imgproc]: Image 和 Processing 这两个单词的缩写组合。图像处理模块,这个模 块包含了如下内容
线性和非线性的图像滤波
其解释如下:
[calib3d]: 其实就是就是 Calibration(校准)加 3D 这两个词的组合缩写。这个模 块主要是相机校准和三维重建相关的内容。基本的多视角几何算法,单个立体摄像头 标定,物体姿态估计,立体相似性算法,3D 信息的重建等等。
[contrib]:也就是 Contributed/Experimental Stuf 的缩写, 该模块包含了一些最近 添加的不太稳定的可选功能,不用去多管。2.4.10 里的这个模块有新型人脸识别, 立体匹配 ,人工视网膜模型等技术。
文件夹 opencv 中的头文件都是类似的,均包含文件夹 opencv2 里的头文件。所 以我们如果是从低版本的 opencv 学习过渡到高版本的 opencv 的话,如果不适应可以先以 o
百度文库
pencv 文件夹里的文件调用为标准。如果熟悉 opencv 里的函数分布,也可以直接调用 open cv2 文件夹里的具体头文件,这样在头文件预编译提高效率。
图像的几何变换
其它(Miscellaneous)图像转换 直方图相关 结构分析和形状描述 运动分析和对象跟踪 特征检测 目标检测等内容
[features2d]: 也就是 Features2D, 2D 功能框架 ,包含如下内容
特征检测和描述 特征检测器(Feature Detectors)通用接口 描述符提取器(Descriptor Extractors)通用接口 描述符匹配器(Descriptor Matchers)通用接口 通用描述符(Generic Descriptor)匹配器通用接口 关键点绘制函数和匹配功能绘制函数
[nonfree]: 也就是一些具有专利的算法模块 ,包含特征检测和 GPU 相关的内容。 最好不要商用,可能会被告哦。
[objdetect]: 目标检测模块,包含 Cascade Classification(级联分类)和 Latent SVM 这两个部分。
[ocl]: 即 OpenCL-accelerated Computer Vision,运用 OpenCL 加速的计算机视觉组 件模块
[ts]:opencv 测试相关代码,不用去管他
[video]: 视频分析组件
该模块包括运动估计,背景分离,对象跟踪等视频处理相关内容 [Videostab]: Video stabilization,视频稳定相关的组件 3、参考文献 [1] http://www.it165.net/pro/html/201404/12370.html(本文中绝大部分内容出 自此博客) [2] http://baike.baidu.com/item/HPP?fr=aladdin
2、接下来看文件夹 opencv2 中的文件
先看 opencv.hpp 文件: #include "opencv2/core/core_c.h" #include "opencv2/core/core.hpp" #include "opencv2/flann/miniflann.hpp" #include "opencv2/imgproc/imgproc_c.h" #include "opencv2/imgproc/imgproc.hpp" #include "opencv2/photo/photo.hpp" #include "opencv2/video/video.hpp" #include "opencv2/features2d/features2d.hpp" #include "opencv2/objdetect/objdetect.hpp" #include "opencv2/calib3d/calib3d.hpp" #include "opencv2/ml/ml.hpp" #include "opencv2/highgui/highgui_c.h" #include "opencv2/highgui/highgui.hpp" #include "opencv2/contrib/contrib.hpp" 很明显 opencv.hpp 的头文件包含了 opencv 库里的所有头文件。 接着看 opencv_modules.hpp 文件: #define HAVE_OPENCV_CALIB3D #define HAVE_OPENCV_CONTRIB #define HAVE_OPENCV_CORE #define HAVE_OPENCV_FEATURES2D
[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
openCV 之头文件分析
我们利用 openCV 开源库进行项目开发时,往往要牵涉到头文件的添加问题,而 o penCV 中头文件众多,该如何选择呢?下面对 openCV2.4.10 的头文件进行一个简单的梳理, 以便能够快速的添加对应的头文件。
1、首先看下 opencv 文件夹中的头文件
其中 cv.h 中包含的头文件: #include "opencv2/core/core_c.h" #include "opencv2/core/core.hpp" #include "opencv2/imgproc/imgproc_c.h" #include "opencv2/imgproc/imgproc.hpp" #include "opencv2/video/tracking.hpp" #include "opencv2/features2d/features2d.hpp" #include "opencv2/flann/flann.hpp" #include "opencv2/calib3d/calib3d.hpp" #include "opencv2/objdetect/objdetect.hpp" #include "opencv2/legacy/compat.hpp"