快速了解OpenCV的架构

《OpenCV计算机视觉开发实践:基于Python》【摘要 书评 试读】- 京东图书

OpenCV软件已经发展得比较庞大了,它针对不同的应用划分了不同的模块,每个模块专注于相应的功能。一个模块下面有可能有类、全局函数、枚举或全局变量等。所有全局函数或变量都在命名空间cv2下,路径为:

C:\Users\Administrator\AppData\Local\Programs\Python\Python38\Lib\ site-packages\cv2

cv2.cp38-win_amd64.pyd文件提供了opencv-python大部分的功能。pyd文件是用其他语言编写的Python库文件。如果用depends.exe工具查看,可以看到其实是用C/C++语言编译过来的,如图3-1所示。

图3‑1

也就是说,cv2.cp38-win_amd64.pyd内部本质上都是一个个C/C++函数和变量等。因此,opencv-python的架构等同于安装C/C++的OpenCV架构,只不过在外层封了一层Python函数接口。我们可以通过了解基于C/C++的OpenCV架构来窥探基于Python的OpenCV架构。基于C/C++的OpenCV架构划分了如图3-2所示的这些模块。

图3‑2

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

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

刚开始没必要一下子全部掌握这些模块,我们可以先学习几个常用的基本模块,其他模块可以等实际工作需要的时候再学习。我们的学习也可以根据这些划分好的模块来展开。

相关推荐
动物园猫28 分钟前
行人细分目标检测数据集:3类别、4,000张图像 | 目标检测
人工智能·目标检测·计算机视觉
船厂电气自动化ai大模型41 分钟前
AI大模型与数学·第57课 傅里叶全套工具链综合实战:串联级数/连续变换/DFT/FFT,图像、音频、扩散模型完整例题
数据结构·人工智能·深度学习·算法·机器学习
v:ychya20181 小时前
2026 外贸 GEO 实操:4 步让独立站被 ChatGPT 优先引用
人工智能·chatgpt
cd_949217211 小时前
角色模型用AI生成纹理靠谱吗,能直接用于游戏吗?
人工智能·游戏
YOLO数据集集合1 小时前
车牌目标检测数据集 | 车牌检测 智能交通 车辆识别 目标检测8003期
人工智能·目标检测·计算机视觉·车牌检测·非机动车车牌
IT_陈寒1 小时前
SpringBoot自动配置失效?你可能漏了这个小开关
前端·人工智能·后端
磁场转动100万匹1 小时前
OpenCV 答题卡识别判卷实战:从图像预处理到自动评分
人工智能·opencv·计算机视觉
cd_949217211 小时前
AI自动生成纹理能保持角色不同部位风格一致吗?
人工智能
人工智能培训1 小时前
人工智能数据安全下的个人信息保护实践方案
大数据·人工智能·算法·生活
大象AI共学1 小时前
# 【AI成本治理】额度缩水 44%-76% 之后的自查清单:10 题体检表 + 三档模型组合 + 免费/本地化实测方案
人工智能