本文分享内容来自图书《学习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扩展模块。













