我的OpenCV4学习之旅(1)-OpenCV4初步了解
OpenCV4学习笔记总结资料来自:《OpenCV4 快速入门》,哔哩哔哩 -OpenCV4 C++快速入门视频30讲
Opencv4简单介绍
OpenCV4是目前最流行的计算机视觉处理库之一,是一个开源的计算机视觉库(Open Source Computer Vision Library,OpenCV4)。
简单来说,OpenCV4可以用来对图像进行处理。而图像处理的基本概念,图像处理一般是指数字图像处理(digital image processing),通过数学函数和图像变化等手段对二维的数字图像进行分析,获得图像数据的潜在信息,通常包括图像压缩,增强和复原,以及匹配,描述和识别3个部分,涵盖噪声去除,分割,特征提取等处理方法和技术。
OpenCV是由一系列C语言函数和C++类构成的,除了支持使用C/C++语言进行开发以外,还支持C#,Ruby等编程语言,并提供了Python,MATLAB,Java等编程语言接口,可以在Linus,Windows,macOS,Android和IOS等系统上运行。
OpenCV4的发展
OpenCV计算机视觉处理库的重要版本发行时间:
时间 |
版本 |
2006年6月 |
OpenCV 1.0版 |
2009年9月 |
OpenCV 2.0版 |
2014年8月 |
OpenCV 3.0版 |
2018年11月 |
OpenCV 4.0版 |
OpenCV4的优点
OpenCV4.0版本进一步完善了核心接口,并添加了二维码检测器,ONNX转换格式等新功能,以及通过C++11标准建立OpenCV4.0,因此要求编译器兼容C++11标准,所需的CMake至少是3.5.1版,版本更新的主要内容是去除了一些过时的C语言API,增加了更多图像处理与计算机视觉算法模型
OpenCV的模块架构
-
calib3d —— 这个模块名称是由calibration(校准)和3D两个术语的缩写组合而成的,顾名思义,这个模块主要包含相机标定与立体视觉等功能,例如物体位姿估计,三维重建,摄像头标定等
-
core —— 核心功能模块。这个模块主要包含OpenCV库的基础结构以及基本操作,例如OpenCV基本的数据结构,绘图函数,数组操作相关函数,动态数据结构等
-
dnn —— 深度学习模块。这个模块是OpenCV4版的一个特色,其主要包括构建神经网络,加载序列化网络模型等
-
features2d —— 这个模块名称是由features(特征)和2D两个术语的缩写组合而成的,其功能主要为处理图像特征点,例如特征检测,描述与匹配等
-
flann —— 这个模块名称是Fast Library for Approximate Nearest Neighbors(快速近似最近邻库)的缩写。这个模块是高维的近似近邻快速搜索算法库,主要包含快速近似近邻搜索与聚类等
-
gapi —— 这个模块是OpenCV4.0中新增加的模块,旨在加速常规的图像处理
-
highgui —— 高层GUI,包含创建和操作显示图像的窗口,处理鼠标事件以及键盘命令,提供图形交互可视化界面等
-
imgproc —— 这个模块名称是由image(图像)和process(处理)两个单词的缩写组合而成的,是重要的图像处理模块,主要包含图像滤波,几何变化,直方图,特征检测与目标检测等
-
ml —— 机器学习模块,主要为统计分类,回归和数据聚类等
-
objdetect —— 目标检测模块,主要为统计分类,回归和数据聚类等
-
photo —— 计算摄影模块,主要包含图像修复和去噪等
-
stitching —— 图像拼接模块,主要包含特征点寻找与匹配图像,估计旋转,自动校准,接缝估计等图像拼接过程的相关内容
-
video —— 视频分析模块,主要包含运动估计,背景分离,对象跟踪等视频处理相关内容
-
videoio —— 视频输入/输出模块,主要用于读取/写入视频或者图像序列