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的正式文档还未发布。如有需要只能到源码中查看帮助文档。
0 0