浅谈opencv3.2中各个模块的简介

2023-11-19

3.2版本的模块说明:Opencv3.2模块
首先打开opencv_modules.hpp文件,可以看到对于各个功能模块的定义如下:
This file defines the list of modules available in current build configuration

define HAVE_OPENCV_CALIB3D

define HAVE_OPENCV_CORE

define HAVE_OPENCV_FEATURES2D

define HAVE_OPENCV_FLANN

define HAVE_OPENCV_HIGHGUI

define HAVE_OPENCV_IMGCODECS

define HAVE_OPENCV_IMGPROC

define HAVE_OPENCV_ML

define HAVE_OPENCV_OBJDETECT

define HAVE_OPENCV_PHOTO

define HAVE_OPENCV_SHAPE

define HAVE_OPENCV_STITCHING

define HAVE_OPENCV_SUPERRES

define HAVE_OPENCV_VIDEO

define HAVE_OPENCV_VIDEOIO

define HAVE_OPENCV_VIDEOSTAB

define HAVE_OPENCV_WORLD*

接着按照上述功能模块对照官方说明进行介绍。
3D相关CALIB3D
全称是Camera Calibration and 3D Reconstruction,也就是所谓的摄像机标定与三维重建。
包括:
1.基本多视角几何算法
2.单立体摄像机标定
3.物体位姿估计
4.三维重建要素

最基础部分CORE
定义了Opencv最为基础的数据结构,是一个内容非常详实与紧凑的模块。
包括了:
1.最基础的结构体
2.动态结构(Opencv1用得多,新版的不需要关注这些,利用std::vector或其他更高级的结构即可)
3.数组操作,包括了abs,absdiff,add,addWeighted,bitwise_and等等一些列的数组操作运算
4.绘画的功能,画点,线,圆,椭圆,方框等等……
5.XML/YAML文件进行存储或调用Opencv的各种数据结构
6.聚类:K-Mean聚类以及分割的API Clustering
7.辅助功能与系统函数和宏
8.OpenGL交互相关

2D特征FEATURES2D
显著的特征描述符,描述符匹配器和探测器.
包括了:
1.特征的检测以及描述:包括Fast算法,MSER,ORB,BRISK,FREAK ,Feature Detection and Description
2.特征检测器的接口 :Common Interfaces of Feature Detectors
3.描述符提取器的接口 :Common Interfaces of Descriptor Extractors
4.描述符匹配器的接口 :Common Interfaces of Descriptor Matchers
5.通用描述符匹配器的接口 :Common Interfaces of Generic Descriptor Matchers
6.关键点以及匹配的绘制函数 :Drawing Function of Keypoints and Matches
7.物体分类:这是基于local 2D features的物体分类,有BOW训练器以及BOW分类器两个模块

近邻搜索FLANN
FLANN库全称是Fast Library for Approximate Nearest Neighbors,它是目前最完整的(近似)最近邻开源库。不但实现了一系列查找算法,还包含了一种自动选取最快算法的机制。
主要分为:
1.快速近似最近邻搜索FLANN
2.聚类Clustering

高层级的交互HIGHGUI
High-level GUI and Media I/O 高层级的用户交互以及媒体的IO接口。
包括了:
1.用户交互:包括显示图片,窗口的操作,鼠标的操作等等。
2.读写图片或者视频:顾名思义就是对于图片或者视频的一些列操作。
3.Qt新功能

图片的读写IMGCODECS
用于图片的读写。
2.4里没有这块,OpenCV3开始图片、视频编解码从highgui模块分离出来,组成了imgcodecs和videoio。Linux环境下需要注意一下,其他没啥。

图片的处理IMGPROC
1.图像滤波Image Filtering:线性和非线性,Sobel,Smooth等等一些列实用的功能函数
2.图像的几何变换Geometric Image Transformations: 这一部分提供2D图像的很多几何变换操作,例如非常实用的Resize等等。
3.各种图片形式的转换Miscellaneous Image Transformations: 提供threshold,cvtColor等等12个功能函数
4.直方图Histograms ,提供便于计算的一些接口
5.结构分析和形状描述Structural Analysis and Shape Descriptors: 计算所有多边形或者栅格化形状的特证矩moment,例如可以提取下图的手的凸陷部分://看着非常实用的感觉
6.动作分析以及物体追踪Motion Analysis and Object Tracking
7.特征检测Feature Detection
(找边界)canny
(找角)cornerEigenValsAndVecs,cornerHarris,cornerMinEigenVal,cornerSubPix,(预处理)preCornerDetect
goodFeaturesToTrack
(找圆)HoughCircles
(找线)HoughLines,HoughLinesP
8.物体检测Object Detection ,就是模板匹配

机器学习ML
Machine Learning机器学习模块,基本就是统计学上回归,分类以及聚类的,大致分为以下几个部分:
1.统计模型Statistical Models
2.一般贝叶斯分类器Normal Bayes Classifier
3.K-近邻K-Nearest Neighbors
4.支持向量机SVM Support Vector Machines:之前尝试过的案例:SVM案例
5.决策树Decision Trees
6.级联分类器Boosting
7.梯度树Gradient Boosted Trees
8.随机树Random Trees
9.超随机树Extremely randomized trees
10.期望最大化Expectation Maximization
11.神经网络Neural Networks
12.机器学习数据的形式相关MLData
如何训练以及使用见地址:机器学习官方说明
————-3.2与2.4相比新增内容
1.Logistic Regression:类似于SVM也是一种多分类器
物体检测OBJDETECT
物体检测
Opencv2.4包含Cascade Classification(级联分类)和Latent SVM这两个部分
Opencv3.2所采用的方法为
Haar Feature-based Cascade Classifier for Object Detection
图像降噪克隆与NPR渲染PHOTO
也就是 Computational Photography,Opencv2.4包括以下两个部分:
1.图像修复Inpainting
void inpaint(InputArray src, InputArray inpaintMask, OutputArray dst, double inpaintRadius, int flags)
2.图像降噪Denoising
———–Opencv3.2模块
1.降噪Denoising相比于2.4功能函数更多了
2.高范围动态成像HDR imaging利用HDR算法,有一系列相关的算法函数……2.4里并没有
3.无缝克隆Seamless Cloning
如图,强大一览无余,图片摘自vsooda的博客

4.非真实感渲染Non-Photorealistic Rendering
看名字很玄乎……大概动画里用得很多,把一个图片渲染得不像真的,如图所示,左侧为一般渲染,右侧为NPR渲染(摘自维基百科)

5.C API
形状的匹配以及距离计算SHAPE
Shape Distance and Matching,形状的距离以及匹配
//对这部分了解不是很多,只能形而上学地复制过来了
Opencv3特有的部分,Opencv2.4并没有…
1. AffineTransformer仿射变换算法的包装类
2. HistogramCostExtractor
3. HausdorffDistanceExtractor
4. ShapeContextDistanceExtractor
5. ThinPlateSplineShapeTransformer

图像拼接STITCHING
图像拼接模块,流程如下,可以去掉或者单独使用其中某些模块。
主要包括以下内容:
1.拼接管道Stitching Pipeline
2.特征点提取以及图片匹配Features Finding and Images Matching
3.旋转估计Rotation Estimation
4.自动校准Autocalibration
5.图片倾斜旋转相关的包Images Warping
6.缝隙估计Seam Estimation
7.曝光补偿Exposure Compensation
8.图片混合Image Blenders
超分辨率SUPERRES
Super Resolution,包含了一系列的超分辨率问题的处理方法

视频分析VIDEO
Video Analysis视频分析,包括以下两块内容:
1.动作分析Motion Analysis
2.物体追踪Object Tracking

视频读写VIDEOIO
OpenCV3特有的仅用来读写视频的模块
视频稳定系VIDEOSTAB
Video Stabilization、视频稳定模块包含一组可以用来解决视频稳定问题的函数和类。2.4基本没提及,3.2里内容比较详实。包括以下两个内容:
1.全局运动估计Global Motion Estimation
包括一些列功能和类用以进行两张图或者两个点云阵的全局动作估计。功能函数都被封装成了类。
2.快速步进法Fast Marching Method
打包WORLD
终于到最后一个了,这是Opencv3特有的,把所有东西打包在一个dll里,配置环境的时候很方便,具体工程实际就要分情况了。
最后放上Opencv3.2以及Opencv2.4模块的对比图方便调用:

其中Opencv2.4特有的几个模块功能说明如下:
//参考了易术军的博客
OPENCV_CONTRIB:也就是Contributed/Experimental Stuf的缩写, 该模块包含了一些最近添加的不太稳定的可选功能,不用去多管。2.4.8里的这个模块有新型人脸识别,立体匹配,人工视网膜模型等技术。
OPENCV_GPU:运用GPU加速的计算机视觉模块
OPENCV_LEGACY:一些已经废弃的代码库,保留下来作为向下兼容,3里以及全部删除。
OPENCV_NONFREE: 也就是一些具有专利的算法模块 ,包含特征检测和GPU相关的内容,在3里删去了。
OPENCV_OCL :即OpenCL-accelerated Computer Vision,运用OpenCL加速的计算机视觉组件模块,在3里整个并入了Core.
OPENCV_TS:测试用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

浅谈opencv3.2中各个模块的简介 的相关文章

随机推荐

  • 获取map中第一个key值

    获取map中第一个key值 param map 数据源 return public static String getKeyOrNull Map
  • SqliLabs Less26-26a

    第二十六关 GET类型基于你所有的空格和言论都是属于我的错误 1 判断注入点 根据提示 sql语句应该存在过滤 观察源代码发现存在or and 空格 斜杠过滤 绕过方法 Or and 采取双写绕过 注释过滤 采取and 1闭合语句绕过 空格
  • 获取url内的参数数据

    例如我们的页面 是含有参数的 类似于 www baidu com userdata 百度用户 我们想获得 url内的userdata的数据值 那么就需要 使用下方这个正则判断方式来进行计算 window location href 这个可以
  • SSM 基础面试题

    什么是 MyBatis 参考答案 1 MyBatis 是一个半自动 ORM 对象关系映射 框架 它内部封装了 JDBC 开发时只需要关注 SQL 语句本身 不需要花费精力去处理加载驱动 创建连接 创建 statement 等繁杂的过程 程序
  • VMware 中的 Ubuntu 虚拟机看不到共享文件夹怎么办?

    初学Linux 在VMWare 上装了Ubuntu14 04 主机端和虚拟机相互间的访问是必不可少的 途径有许多 其中vmware tool提供的共享文件夹方式简单又方便 然而 有时却莫名其妙的 在Ubuntu上看不到共享文件夹了 网上查了
  • 【vue3+elementplus】动态设置二次封装的el-form组件中的v-model绑定的变量名

    众所周知 在form表单中 el select el input等需要使用v model绑定变量 这个变量就是当前选择 输入的内容 一般会取ruleForm作为入参
  • java对象赋值给另一个对象_java注解实现对象的属性赋值,从此少写代码,快乐生活...

    各位志同道合的朋友们大家好 我是一个一直在一线互联网踩坑十余年的编码爱好者 现在将我们的各种经验以及架构实战分享出来 如果大家喜欢 就关注我 一起将技术学深学透 我会每一篇分享结束都会预告下一专题 我们平时在做一些业务时 从前台获取的数据用
  • 自定义模块导入错误

    当在python2 7 导入自定义模块 发生Importerror No module named xxx时 可将模块所在路径拷贝到E xxx python2 7 Lib site packages下 再进行导入则可解决问题 经过多方的摸索
  • MobaXterm出现X11-forwarding : ✘ (disabled or not supported by server)及conda: command not found等问题

    x11 forwarding disabled解决办法 3L csdn的博客 CSDN博客 如何安装X11 xorg https www cnblogs com yun qi p 16201843 html如何解决在Ubuntu中使用x11
  • 机器学习之线性回归——OLS,岭回归,Lasso回归

    机器学习之线性回归 线性回归 最小二乘法 OLS 岭回归 Ridge Regression Lasso回归 OLS 岭回归 Lasso回归之间对比 线性回归 什么是线性回归呢 其实线性回归是统计学中的 线性回归 Linear Regress
  • java 中的指针_Java中的指针

    java 中的指针 Java中有指针吗 简短的答案是 不 没有 这对于许多开发人员来说似乎是显而易见的 但是 为什么对其他人却不那么明显呢 http stackoverflow com questions 1750106 how can i
  • STM32实现HID键盘

    上面是我的微信和QQ群 欢迎新朋友的加入 这个帖子不是技术贴 是成品分享贴 电路设计 实物图 软件设计 功能说明 1 固件通过虚拟U盘升级 2 自定义按键功能 全键盘 3 七彩灯颜色设置 4 多媒体按键功能 5 支持按键双击和单击操作 6
  • c语言药房管理系统

    include
  • VisualStudio代码片段管理

    文章目录 前言 1 查看代码片段 2 插入代码片段方式 3 使用扩展创建代码片段 3 1 安装VS2019的扩展 3 2 使用扩展创建代码片段 4 不知为何 VS2022我安装一直有问题 扩展安装成功 但是新建文件没有 Snippet De
  • Unity 运行FixedUpdate()无响应

    问题 最近在学习unity时 根据 史上最全Unity3D教程 哔哩哔哩 bilibili 在Visual Studio中编写如下代码时 Unity的Console面板并没有输出预期的信息 即按每个固定帧速率的帧调用FixedUpdate
  • Matlab导出动态链接库dll

    1 新建 m文件 内容 function c Add a b c a b end 保存为 Add m 2 命令行输入 gt gt mex setup MEX configured to use Microsoft Visual C 2013
  • 各种注释总结

    jsp注释 html注释
  • C语言—指针

    文章目录 1 指针 1 1 指针的定义 1 2 和 1 3 指针与堆内存 1 4 指针运算 1 5 常量指针与指针常量 1 5 1 常量指针 1 5 2 指针常量 1 6 函数指针 2 指针与数组 3 指针与函数 4 指针与链表 4 1 链
  • cmake中的编译选项

    CMake是一个跨平台的构建系统 它可以根据简单的配置文件生成各种平台的构建工具 例如Makefile Visual Studio项目文件等 CMake使用CMakeLists txt文件来描述项目的构建规则和依赖关系 在这个文件中 可以设
  • 浅谈opencv3.2中各个模块的简介

    3 2版本的模块说明 Opencv3 2模块 首先打开opencv modules hpp文件 可以看到对于各个功能模块的定义如下 This file defines the list of modules available in cur