OpenCv3.0架构内容及改变
来源:互联网 发布:正规网络博客平台 编辑:程序博客网 时间:2024/05/22 12:04
OpenCv的架构及特点
一、OpenCv的基本架构
OpenCv现在的版本已经到了3.1beta,2.0及以上的版本与1.0的版本有了较大的改变。故搜集了一些资料,整理了一下3.0版本的主要架构内容,方便对它有一个大概的了解。
opencv_core
核心功能模块,特别是基本的数据结构和算法函数。
- OpenCv基本数据结构
- 动态数据库
- 绘图函数
- 数组操作相关函数
- 辅助功能与系统函数的宏
opencv_imgpr
包含主要的图像处理函数。
- 线性和非线性图像滤波
- 图像几何变换
- 图像转换
- 直方图
- 结构分析和形状描述
- 运动分析和对象跟踪
- 特征检测
- 目标内容检测
opencv_highgui
包含图像、视频读写和部分用户界面函数。
opencv_features2d
包含特征点检测器、描述子以及特征点匹配框架。
- 特征检测和描述
- 特征检测器
- 描述符提取器
- 描述符匹配器
- 通用描述符
- 关键点绘制函数和匹配功能绘制函数
opencv_calib3d
包含相机标定、双视角几何估计以及立体函数。
opencv_video
包含运动估计、特征跟踪以及前景提取函数和类。
opencv_objdetect
包含目标检测函数、例如面部和人体探测。
典型的opencv C++代码首先必须包含必需的模块:
#include<opencv2/core/core.hpp>#include<opencv2/imgproc/imgproc.hpp>#include<opencv2/highgui/highgui.hpp>
接下来的就不怎么常用了
calib3d:
全称Calibration 3D(3D校准),这个模块主要用于相机校准和三维重建。其中包括多视角几何算法、单个立体摄像头标定,物体姿态估计,立体相似算法等。
contrib
Contributed/Experimental Stuff的缩写(不太确定这个这个全称是否正确)。官方给的解释只是说是共享代码。但有些资料说是新添加的不太稳定的可选功能。包括新型人脸识别、立体匹配、人工视网膜模型等。
opencv_ml
机器学习模块,基本上是统计模型和分类算法。
- 统计模型(statistical Models)
- 一般贝叶斯分类器(Normal Bayes Classifier)
- K-近邻(K-Nearest Neighbors)
- 支持向量机(Support Vetor Machines)
- 决策树(Decision Tresss)
- 提升(Boosting)
- 梯度提高数(Gradient Boosted Trees)
- 随机树(Random Trees)
- 超随机数(Extremely randomized trees)
- 期望最大化(Expectation Maximization)
- 神经网络(Neural Neteworks)
- MLData
opencv_flann
高维的近似近邻快速搜素算法。
opencv_legacy
过时代码。
opencv_gpu
加速代码。
opencv_photo
计算摄像模块。
opencv_stitching
实现图像拼接算法。
二、OpenCv3的改变
- 大体保留OpenCv 2经典的C++和Python编程接口风格。其中,增强Python接口,加入Python 3.X的支持。另外,改善了Java接口,并且接入MATLAB支持。
- 架构调整。图片、视频编解码从highgui模块分离出来,组成imgcodec和videoio。原先OpenCL模块ocl与其他模块融为一体,而CUDA加速模块gpu分解成数个以cuda开头的模块。除了官方支持的OpenCv代码,还有一些自发贡献的内容,都放在opencv_contrib中。
- 添加了新的算法。新版本包括了TLD,鱼眼镜头模型等全新算法。还包括更高层次的高级封装,比如汽车检测等。
- 引入T-API,使OpenCv加速更容易。目前可以参考OpenCv源代码中的T-API代码。开启和关闭OpenCL功能只需要一句代码。更加的方便。
- 优化更多指令集。除了对Intel平台的CPU的优化外,还添加了对ARM平台NEON指令集的支持。OpenCv 3对X86和X64平台默认支持IPP,加快了处理速度。
- 稳定性。Beta版本的绝大部分算法通过稳定测试,只有设计32位windows的极少部分没有通过。
- 3.0的正式文档还未发布。如有需要只能到源码中查看帮助文档。
- OpenCv3.0架构内容及改变
- opencv3.0 beta的一些改变
- opencv3 源码文件夹内容
- MFC改变static text颜色和内容及字体大小
- Unity5.x Ugui Button事件 及 改变Text 内容
- jQuery6(获取元素练习,改变标签样式及内容)
- OpenCV3及opencv_contrib安装
- Ubuntu14.04安装OPENCV3.0流程及遇到的问题
- 监听文本框内容改变
- js改变框架内容
- 监听文本框内容改变
- js改变文本内容
- 改变 HTML 内容
- JavaScript:改变 HTML 内容
- 监听ContentProvider内容改变
- 布局内容改变动画
- JavaScript:改变 HTML 内容
- 改变Java String内容
- jqury实现点击小图出现大图
- Oculus Rift, HTC Vive, SONY PSVR的全面对比
- Android常用权限permission列表摘录
- java面试100题以及答案(二)
- 如何获取 Android 设备的CPU核数、时钟频率以及内存大小
- OpenCv3.0架构内容及改变
- 封装scrolltop 兼容
- Android+PHP+MYSQL开发简单实例
- 哈希表,处理冲突的方法
- 蓝桥杯之最简单的爆破-----数字谜
- andorid studio 启动 fetching android sdk..问题解决办法
- 2016年Java实习生阿里巴巴面经
- web.xml文件中配置spring的ContextLoaderListener后报错
- solr整合到tomcat的方法