【从零学习OpenCV 4】了解OpenCV的模块架构

本文首发于“小白学视觉”微信公众号,欢迎关注公众号

本文作者为小白,版权归人民邮电出版社所有,禁止转载,侵权必究!


经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍《OpenCV 4开发详解》。为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通,提前在公众号上连载部分内容,请持续关注小白。

为了更全面的了解OpenCV,首先需要了解OpenCV的整体模块架构,对每个模块的功能有个初步认识,之后才能在后续的学习中知道每个功能函数出自于哪个模块,在原有功能的基础上进行调整与改进。本节将带读者了解OpenCV 4.1的模块架构,介绍每个模块的主要功能。

打开OpenCV 4.1的文件夹,在“...\opencv\build\include”文件夹中只有一个名为opencv2的文件夹。这里需要再次重点说明,在OpenCV 4之前的版本中,该文件夹下有opencv和opencv2两个文件夹,而在OpenCV 4中将两者整合成opencv2一个文件夹。打开opencv2文件夹就可以看到OpenCV 4.1的模块架构,如图1-20所示。

【从零学习OpenCV 4】了解OpenCV的模块架构_第1张图片

这些模块有的经过多个版本的更新已较为完善,包含了较多的功能;有的模块还在逐渐的发展中,包含的功能相对较少。接下来将按照文件夹的顺序介绍模块的功能。

【calib3d】——这个模块名称是由calibration(校准)和3D这两个单词的缩写组合而成,通过名字我们可以知道,模块主要包含相机标定与立体视觉等功能,例如物体位姿估计、三维重建、摄像头标定等。

【core】——核心功能模块,模块主要包含 OpenCV 库的基础结构以及基本操作,例如OpenCV基本数据结构、绘图函数、数组操作相关函数、动态数据结构等。

【dnn】——深度学习模块,这个模块是OpenCV 4版本的一个特色,其主要包括构建神经网络、加载序列化网络模型等。但是该模块目前仅适用于正向传递计算(测试网络),原则上不支持反向计算(训练网络)。

【features2d】——这个模块名称是由features(特征)和2D这两个单词的缩写组合而成,其功能主要为处理图像特征点,例如特征检测、描述与匹配等。

【flann】——这个模块名称是Fast Library for Approximate Nearest Neighbors(快速近似最近邻库)的缩写,这个模块是高维的近似近邻快速搜索算法库,主要包含快速近似最近邻搜索与聚类等。

【gapi】——这个模块是OpenCV 4.0中新增加的模块,旨在加速常规的图像处理,与其他模块相比,这个模块主要充当框架而不是某些特定的计算机视觉算法。

【highgui】——高层GUI图形用户界面,包含创建和操作显示图像的窗口、处理鼠标事件以及键盘命令、提供图形交互可视化界面等。

【imgcodecs】——图像文件读取与保存模块,主要用于图像文件读取与保存。

【imgproc】——这个模块名称是由image(图像)和process(处理)两个单词的缩写组和而成,是重要的图像处理模块,其主要包括图像滤波、几何变换、直方图、特征检测与目标检测等。

【ml】——机器学习模块,主要为统计分类、回归和数据聚类等。

【objdetect】——目标检测模块,主要用于图像目标检测,例如检测Haar特征。

【photo】——计算摄影模块,主要包含图像修复和去噪等。

【stitching】——图像拼接模块,主要包含特征点寻找与匹配图像、估计旋转、自动校准、接缝估计等图像拼接过程的相关内容。

【video】——视频分析模块,主要包含运动估计、背景分离、对象跟踪等视频处理相关内容。

【videoio】——视频输入输出模块,主要用于读取与写入视频或者图像序列。

通过对OpenCV 4.1的模块构架的介绍,相信读者已经对OpenCV 4.1整体架构有了一定的了解。其实简单来说OpenCV就是将众多图像处理模块集成在一起的软件开发包(Software Development Kit,SDK),其自身并不复杂,只要通过学习都可以轻松掌握其使用方式。

从零学习OpenCV 4往期推荐

【从零学习OpenCV 4】Windows系统中安装OpenCV 4

【从零学习OpenCV 4】Ubuntu系统中安装OpenCV 4

【从零学习OpenCV 4】opencv_contrib扩展模块的安装

【从零学习OpenCV 4】Image Watch插件的使用

经过几个月的努力,市面上第一本OpenCV 4入门书籍《OpenCV 4开发详解》将于今年12月左右由人民邮电出版社发行。如果小伙伴觉得内容有帮助,希望到时候多多支持!

关注小白的小伙伴可以提前看到书中的内容,我们创建了学习交流群,欢迎各位小伙伴添加小白微信加入交流群,添加小白时请备注“学习OpenCV 4”。

【从零学习OpenCV 4】了解OpenCV的模块架构_第2张图片

【从零学习OpenCV 4】了解OpenCV的模块架构_第3张图片

你可能感兴趣的:(OpenCV,4开发详解,OpenCV,4,C++,图像处理,计算机视觉)