学习 opencv---(1) opencv3.1.0 组件结构浅析
本系列是根据 浅墨大神 的opencv系列而写的,,应该大部分内容会一样。。如有侵权还请告知。。。。。。。。。。。
开发环境:win7 + VS2013 + opencv3.1.0
至于OpenCV组件结构的研究方法,我们不妨管中窥豹,通过opencv安装路径下include目录里面头文件的分类存放,来一窥OpenCV这些年迅猛发展起来的庞杂组件架构。
我们进入到D:\opencv\build\include目录,可以看到有opencv和opencv2这两个文件夹。显然,opencv这个文件夹里面包含着旧版的头文件。而opencv2这个文件夹里面包含着具有时代意义的新版OpenCV2系列的头文件。

在opencv这个文件夹里面,也就是D:\opencv\build\include\opencv目录下,可以看到如下的各种头文件。这里面大概就是opencv 1.0最核心的,而且保留下来的内容的头文件,可以把它们整体理解为一个组件。

再来看看我们重点关注的opencv2这边,在D:\opencv\build\include\opencv2目录下,我们可以看到这些文件夹:

我们灵机一动,发现下面有个叫opencv_modules.hpp的hpp文件,一看就知道里面存放的是opencv2中的新模块构造相关的说明代码,打开一看,果不其然,定义的是OpenCV2所有组件的宏:

OK,就不多客套了,下面就是OpenCV的所有模块介绍,按照顺序来:
【calib3d】: 其实就是calibration (校准) +3D 这俩个词的组合缩写。这个模块主要是相机校准和三维重建相关的内容。基本的多视角几何算法,单个立体摄像头标定,物体姿态估计,立体相似性算法,3D信息的重建等等。。
【contrib】: 也就是contributed/experimental stuf 的缩写,该模块包含了一些最近添加的不太稳定的可选功能,不用去多管。2.4.8里的这个模块有新型人脸识别,立体匹配,人工视网膜模型等技术。(不过这个包2.4.13里没有)
【core】: 核心功能模块:
(1)opencv基本数据结构
(2)动态数据结构
(3)绘图函数
(4)数组操作相关函数
(5)辅助功能与系统函数和宏
(6)与 opengl 的互操作
【feature2d】;也就是feature2d ,2d功能框架:
---特征检测和描述
---特征检测器(feature detectors)通用接口
----描述符提取器(descriptor extractors)通用接口
-----描述符匹配器(descriptor match)
-----通用描述符(generic descriptor)匹配器通用接口
-----关键点绘制函数和匹配功能绘制函数
【flann】:fast library for approximate nerarest neighbors ,高维的近似近邻快速搜索算法库(这个模块也没有)
---快速近似最近邻搜索
----聚类
【gpu】运用GPU加速的计算机视觉模块(没有)
【highgui】:也就是high gui ,高层GUI图形用户界面,包含媒体的I/O 输入输出,视频捕捉,图像和视频的编码解码,图形交互界面的接口内容
【imgcodecs】:负责各种格式的图片的读写,这个模块是从以前的highgui 中剥离的
【imgproc】: image 和processing 这俩个单词的缩写组合。即图像处理模块:
---线性和非线性的图像滤波
---图像的几何变换
----其它(miscellaneous)图像转换
-----直方图相关
-----结构分析和形状描述
----- 运动分析和对象追踪
----特征检测
------目标检测等内容
【ml】——Machine Learning,机器学习模块, 基本上是统计模型和分类算法,包含如下内容:
---统计模型(statistical models)
---一般贝叶斯分类器(normal bayes classifier)
---K-近邻(K-nearesneighbors)
---支持向量机(support vector machines)
---决策树(decision tress)
---提升(boosting)
---梯度提高树(gradient boosted tress)
---随机树(random tress)
---超随机树(extremely randomized tress)
--期望最大化(expectation maximization)
---神经网络(neural networks)
---MLDATA
【legacy】; 一些已经废弃的代码库,保留下来作为向下兼容(这个模块没有)
--- 运动分析
---期望最大化
---直方图
---平面细分(C api)
---特征检测和描述(Feature Detection and Description
---描述符提取器(Descriptor Extractors)的通用接口
----通用描述符(Generic Descriptor Matchers)的常用接口
---匹配器
【nonfree】 : 一些具有专利的算法模块,包含特征检测和GPU相关的内容,最好不要商用,可能会被告(没有)
【objdetect】: 目标检测模块,包含cascade classification(级联分类)和 latent SVM 这俩个部分
【photo】: 就是computational photography ,包含图像修复和图像去噪两部分
【shape】;形状匹配算法模块。用于描述形状,比较形状
【stitching】: image stitching,图像拼接模块
---拼接流水线
---特点寻找和匹配图像
---估计旋转
---自动校准
---图片歪斜
---接缝估测
---曝光补偿
---图片混合
【superres】: superresolution,超分辨技术的相关功能模块
【video】:视频分析组件,该模块包括运动估计,背景分离,对象跟踪等视频处理相关内容
【videoio】 ;负责视频文件的读写,也包括摄像头,kinect等的输入
【videostab】: video stabilization .视频稳定相关的组件,官方文档中没有多作介绍,不管了
介绍一个博客:http://www.cnblogs.com/zengcv/p/5716265.html 里面有比较详细的介绍
看到到这里,相信大家已经对OpenCV的模块架构设计有了一定的认识。
OpenCV其实就是这么多模块作为代码容器组合起来的一个SDK而已,没什么稀奇的,对吧。
学习 opencv---(1) opencv3.1.0 组件结构浅析的更多相关文章
- 【opencv学习笔记二】opencv3.4.0组件结构说明
在学习opencv使用之前我们先来看一下opencv有哪些组件结构.至于OpenCV组件结构的研究方法, 我们不妨管中窥豹,通过opencv安装路径下include目录里面头文件的分类存放,来一窥Op ...
- angular2.0学习笔记3.了解angular2.0项目结构
1.我们应用的代码都位于src文件中,包括所有的组件.模板.样式.图片以及我们的应用所需的任何东西都在这个文件来里. 2.src这个文件夹之外的文件都是为构建应用提供支持用的. src文件夹及用途说明 ...
- win10下vs2015配置Opencv3.1.0过程详解
下载安装Opencv3.1.0 下载Opencv3.1.0,进入官网,点击opencv for windows即可下载. 点击运行下载好的文件.实际上,opencv的安装程序就是解压缩文件,个人因为 ...
- win10下vs2015配置Opencv3.1.0过程详解(转)
下载安装Opencv3.1.0 下载Opencv3.1.0,进入官网,点击opencv for windows即可下载. 点击运行下载好的文件.实际上,opencv的安装程序就是解压缩文件,个人因为 ...
- ubuntu14.04 + GTX980ti + cuda 8.0 ---Opencv3.1.0(基础+opecv_contrib)配置
如果喜欢视频的话:YouTube 上有视频教程 https://www.youtube.com/watch?v=1YIAp3Lh5hI 后来我在mac上安装最新版的OpenCV 找到了一片非常详细的教 ...
- 64 位系统 vs2013 配置 OpenCV-3.1.0
参考:64 位系统 vs2013 配置 opencv3.0 1. 环境准备 进入官网 http://opencv.org/,下载最新版本的 opencv(以本文 opencv-3.1.0 为例,.ex ...
- OpenCV学习笔记(一)——OpenCV3.1.0+VS2015开发环境配置
摘要: 由于最近AR(增强现实)这个概念非常火爆,各种基于AR的应用及游戏逐渐面向大众,而在AR中最重要的两个技术就是跟踪识别和增强渲染,其中跟踪识别是通过OpenCV这个开源的计算机视觉库来实现的, ...
- 我的复杂的OpenCV编译之路(OpenCV3.1.0 + VS2010 + Win7)
教程:www.cnblogs.com/jliangqiu2016/p/5597501.html 这里主要记载我编译遇到的错误及解决方法. OpenCV3.1软件下载:https://sourcefor ...
- OpenCV 2.4.8组件结构全解析
转自: http://blog.csdn.net/huang9012/article/details/21811271 之前啃了不少OpenCV的官方文档,发现如果了解了一些OpenCV整体的模块架构 ...
随机推荐
- 嵌入式Linux驱动学习之路(二十二)用内存模拟磁盘
安装驱动后,可在/dev/目录下发现已经生成了相应的设备文件. 格式化设备:mkdosfs /dev/ramblock. 挂载设备. 读写设备 . 驱动程序代码: /***************** ...
- Linux Linux程序练习十八
题目:编写一个TCP服务器和客户端,基于TCP的并发远程shell 要求实现: )对于所有收到的客户端消息,作为命令行进行执行, 并且将命令行的输出结果返回给客户端 )要求使用并发结构 )实现关键代码 ...
- vue2.0 开发实践总结之入门篇
vue2.0 据说也出了很久了,博主终于操了一次实刀. 整体项目采用 vue + vue-router + vuex (传说中的vue 全家桶 ),构建工具使用尤大大推出的vue-cli 后续文 ...
- VUE --- 给页面加点网络动态数据
这时候的页面都是静态的(数据在写程序的时候已经固定了不能修改),而每个应用基本上都会请求外部数据以动态改变页面内容.对应有一个库叫 vue-resource 帮我们解决这个问题. 使用命令行安装 cn ...
- Swift学习笔记-ARC
Swift使用自动引用计数(ARC)机制来跟踪和管理你的应用程序的内存.通常情况下,Swift 内存管理机制会一直起作用,你无须自己来考虑内存的管理.ARC 会在类的实例不再被使用时,自动释放其占用的 ...
- 【PHP】月末・月初の出力方法
文章出处 : Qiita - http://qiita.com/shoridevel/items/0a2f4a64e55d84919a1c 今月の月初 echo date("Y-m-01&q ...
- inference和learning
一开始对于机器学习,主要是有监督学习,我的看法是: 假定一个算法模型,然后它有一些超参数,通过喂多组数据,每次喂数据后计算一下这些超参数.最后,数据喂完了,参数取值也就得到了.这组参数取值+这个算法, ...
- MySQL的insert语句的区别
SQL Server: insert into tb_articleType (articleType_name,articleType_info) values ("test", ...
- 加载dll过程中assembly失败
错误现象: 进行插件读取时出现错误:“尝试从一个网络位置加载程序集,在早期版本的 .NET Framework 中,这会导致对该程序集进行沙盒处理.此发行版的 .NET Framework 默认情况下 ...
- margin和padding的区别
目前web2.0已经越来被人们认可,因为喜欢搞web开发的人员不得不硬着头皮去学习web2.0的标准,其中很重要的一条就是新的布局规则,div+css.以前基本上是用table布局的,这种传统的方式简 ...