本文分享内容来自图书《学习OpenCV 4:基于Python的算法实战》,该书刚刚上市,是国内第一本系统讲解OpenCV4各个模块的图书,配套案例深入浅出的讲解。第一章有在各个平台搭建环境的介绍,后面每个章节都有对模块的导读、模块经典算法的案例介绍以及进阶阅读,适合图像处理、计算机视觉领域的初学者以及相关的工程开发人员。目录如下:

第1章 OpenCV快速入门;
第2章 图像读写模块imgcodecs;
第3章 核心库模块core;
第4章 图像处理模块imgproc(一);
第5章 图像处理模块imgproc(二);
第6章 可视化模块highgui;
第7章 视频处理模块videoio;
第8章 视频分析模块video;
第9章 照片处理模块photo;
第10章 2D特征模块features2d;
第11章 相机标定与三维重建模块calib3d;
第12章 传统目标检测模块objdetect;
第13章 机器学习模块ml;
第14章 深度神经网络模块dnn

欢迎关注图书《深度学习计算机视觉实战》与《学习OpenCV 4:基于Python的算法实战》,两本书都以通俗易懂的讲解、丰富的案例帮助初学者学习视觉与图像方向的知识。欢迎关注公众号“计算机视觉与OpenCV”获取更多的学习资料。
OpenCV为开源软件,读者可以阅读其文档和源码了解代码结构,整个算法库的框架如图1.30所示。
图1.30
OpenCV的源码中,在modules路径下存放着OpenCV的所有模块,最重要的模块就是内核模块core与图像处理模块imgproc。本书后续章节将分模块介绍,结合案例讲解OpenCV的使用,本节介绍常用模块以及常用扩展模块的功能。

1.3.1 常用模块

OpenCV4中包含的模块有21个,每个模块都被保存在一个单独的子目录中,如图1.31所示。

图1.31
各模块的功能如下。
calib3d:该模块由相机校准(calibration)和三维重建(3d)两个部分组成,主要用于相机标定与三维视觉等;
core:OpenCV的内核模块,定义了基础数据结构与基础计算;
dnn:该模块主要用于深度学习推理部署,不支持模型训练;
features2d:该模块主要用于特征点处理,例如特征点检测与匹配等;
flann:FLANN为快速最近邻算法(Fast Library for Approximate Nearest Neighbors)的缩写,该模块包含快速近似最近邻搜索和聚类等功能;
gapi:该模块对图像处理算法做了加速处理,不属于OpenCV的功能模块;
highgui:该模块用于创建图像化界面操作,例如创建和操作图像显示窗口、鼠标与键盘事件处理,进度条等图像化交互操作;
imgcodecs:该模块负责图像文件读写,如图像读取与保存;
imgproc:该模块是OpenCV图像处理最重要的模块,主要功能如图像滤波、图像几何变换、直方图操作等;
ml:该模块为机器学习模块,包含常见的机器学习算法,如支持向量机和随机森林等;
objdetect:该模块主要用于图像目标检测,例如Haar特征检测等;
photo:该模块主要负责照片处理,如照片修复和去噪等;
stitching:该模块负责图像拼接,功能包括图像特征点寻找与匹配等图像拼接技术;
video:该模块用于视频分析,如运动估计、背景分离等;
videoio:该模块负责视频读写,主要视频文件的读取和写入。

1.3.2 扩展模块

OpenCV在视觉算法中的功能非常强大,其中一个原因就是该算法库一直在与时俱进的更新最新的算法,对于具有专利的算法(如SURF)以及一些还没有稳定的算法,OpenCV会将其置于扩展模块中,这些扩展模块包含在opencv_contrib代码库中。对于稳定的算法,会被移到OpenCV主仓库代码中,因此读者需要谨慎的使用opencv_contrib,因为不同版本的函数可能存在差异。
在OpenCV 3.x版本之后,opencv_contrib就不再包含于OpenCV源码中,opencv_contrib的源码可以在Github上下载,然后参与OpenCV源码编译,编译方法将在案例5中讲解。
opencv_contrib的模块及其功能说明如下。
alphamat:Alpha Matting信息流算法;
aruco:增强现实标记算法;
barcode:条形码检测与解码方法;
bgsegm:增强背景-前景分割算法;
bioinspired:仿生学视觉模型和衍生工具;
ccalib:用于三维重建的自定义校准模式;
cudaarithm:CUDA矩阵运算;
cudabgsegm:CUDA背景分割;
cudacodec:CUDA视频编解码;
cudafeatures2d:CUDA特征检测与描述;
cudafilters:CUDA图像滤波;
cudaimgproc:CUDA图像处理;
cudalegacy:CUDA传统支持;
cudaobjdetect:CUDA目标检测;
cudaoptflow:CUDA光流算法;
cudastereo:CUDA立体匹配;
cudawarping:CUDA图像扭曲;
cudev:CUDA设备层;
cvv:计算机视觉程序交互式可视化调试的GUI;
datasets:用于处理不同数据集的框架;
dnn_objdetect:基于DNN的目标检测;
dnn_superres:基于DNN的超分;
dpm:基于可变形零件的模型;
face:人脸分析;
freetype:使用freetype/harfbuzz绘制UTF-8字符串;
fuzzy:基于模糊数学的图像处理;
hdf:分层数据格式I/O例程;
hfs:基于层次特征选择的图像分割方法;
img_hash:该模块提供了不同的图像哈希算法的实现;
intensity_transform:该模块提供了用于调整图像对比度的强度变换算法的实现;
julia:OpenCV Julia绑定;
line_descriptor:用于从图像中提取线条的二进制描述符;
mcc:Macbeth图表模块;
optflow:光流算法;
ovis:OGRE三维可视化器;
phase_unwrapping:相位展开API;
plot:Mat数据绘制函数;
quality:图像质量分析API;
rapid:基于轮廓的三维目标跟踪;
reg:图像配准;
rgbd:RGB深度处理;
saliency:显著性API;
sfm:运动结构分析;
shape:形状距离与匹配;
stereo:立体匹配算法;
structured_light:结构光API;
superres:超分模块;
surface_matching:曲面匹配;
text:场景文字检测与识别;
tracking:追踪API;
videostab:视频稳定;
viz:三维可视化器;
wechat_qrcode:微信二维码检测器,用于检测和解析二维码;
xfeatures2d:features2d扩展模块;
ximgproc:imgproc扩展模块;
xobjdetect:objdetect扩展模块;
xphoto:photo扩展模块。

【学习OpenCV4】OpenCV4与opencv-contrib模块介绍相关推荐

  1. OpenCV环境配置:Ubuntu18.04编译OpenCV4.2.0和contrib模块记录

    OpenCV环境配置:Ubuntu18.04编译OpenCV4.2.0和contrib模块记录 1.下载源码和安装依赖包 2.解压源码文件和配置路径 3.配置Cmake并编译OpenCV 4.导入Op ...

  2. C++ OpenCV Contrib模块LBF人脸特征点检测

    学更好的别人, 做更好的自己. --<微卡智享> 本文长度为3322字,预计阅读9分钟 前言 <OpenCV源码Android端编译,用时三天,我编了个寂寞...>文中介绍了编 ...

  3. 【OpenCV 笔记】编译Opencv contrib模块

    前言:opencv官方提供的build并不包含全部的功能,比如本人最近接触到的SURF特征提取,这些功能都集成在了contrib模块中,需要我们自己到opencv的官方GitHub上下载contrib ...

  4. tf.nn,tf.layers, tf.contrib模块介绍

    一.tf.nn,tf.layers, tf.contrib概述 我们在使用tensorflow时,会发现tf.nn,tf.layers, tf.contrib模块有很多功能是重复的,尤其是卷积操作,在 ...

  5. opencv contrib模块 示例 WeChat qrcode微信二维码检测解码

    在opencv 4.5.3 的 contrib中, 腾讯WeChatCV团队贡献了wechat_qrcode模块,3行代码即可在opencv中实现微信的扫码功能. 文档链接为https://docs. ...

  6. SpringBoot+Shiro学习(一):主要模块介绍

    这篇文章是我最近对SpringBoot+Shiro+mybatis+redis一个练手项目的记录. 我是按照慕课网的一篇课程+百度进行练手的 慕课课程 练手项目Github地址 跟着开涛学Shiro ...

  7. 前端学习(2390):登录模块介绍

  8. 深度学习与OpenCV DNN模块:权威指南

    计算机视觉领域自20世纪60年代末就已经存在.图像分类和目标检测是计算机视觉领域的一些最古老的问题,研究人员已经努力解决了几十年.使用神经网络和深度学习,我们已经达到了一个阶段,计算机可以开始真正地理 ...

  9. opencv opencv contrib

    opencv contrib https://github.com/opencv/opencv_contrib/releases/tag/4.5.5 opencv https://github.com ...

  10. OpenCV + OpenCV Contrib安装教程(windows)

    一.OpenCV Contrib模块简介 OpenCV Contrib是OpenCV的扩展模块,包含了许多最新的以及可能还没有正式发布有待进一步完善的算法,可以理解为是OpenCV的扩展包,在Open ...

最新文章

  1. java线程池的使用
  2. 权限管理,pymysql模块
  3. redis慢查询使用总结
  4. 免杀新姿势:利用线程将恶意代码注入到内存中
  5. 2018.09.16 loj#10243. 移棋子游戏(博弈论)
  6. SAP License:中国集团管控存在的主要问题-已加入点评
  7. spark mlib行矩阵(RowMatrix)入门
  8. leetcode(105)从前序遍历和中序遍历构建二叉树
  9. 【ArcGIS|空间分析】地理编码
  10. 如何获取CSDN积分?
  11. Microsoft Access 操作查询
  12. UART协议TTL电平接口高性能低功耗SI4463无线透传通信模块
  13. java解析MT940报文,swift MT报文解析处理
  14. 【记录一些名人博客地址】
  15. 量化噪声的大小与什么成正比_量化噪声
  16. JavaScript 常见鼠标事件
  17. 视觉SLAM——特征点法与直接法对比以及主流开源方案对比 ORB LSD SVO DSO
  18. 【有利可图网】PS技巧:巧用PS制作朦胧古风美女!
  19. [dt]世纪历史长河年代表
  20. 卡巴斯基网站被黑 引发安全风险

热门文章

  1. 基于Unity的2D小游戏 SpeedDown 开发笔记(学习bilibili@[M_Studio]的教学视频
  2. (转)使用jsonp帮助你知道关注的他或她QQ音乐中搜藏了什么歌曲
  3. 计算机桌面黑屏有鼠标,电脑屏幕黑屏但有鼠标指针是怎么回事?
  4. Windows Server 2008 域操作(创建域、加入域、创建普通用户、组策略管理设置)
  5. 区块链行业如何摆脱“圈内自嗨”,真正进入大众市场?
  6. 使用国产KT148A语音芯片sop8封装,用户可以自己更换声音,低成本,高秒数
  7. 基于sklearn的软硬间隔以及各类核函数的SVM实现
  8. 奔三的你,是否还年轻
  9. 卸载VS时彻底删除C盘文件方法
  10. html5 表格向下,HTML5 教程之HTML 表格