OpenCV是英特尔公司提出开源计算机视觉库的概念。是1999年创建的。
通过在计算机视觉库中包含图像处理与计算机视觉的通用算法,避免重复,无用的工作。
OpenCV由一系列C语言函数和C++类构成,除了支持C/C++语言进行开发,还支持C#,Ruby等编程语言,并提供了Python,MATLAB,Java等编程语言接口,可以在Linux,Windows,macOS,Android和iOS等系统上运行。
OpenCV模块架构:
calib3D——相机标定和立体视觉等功能,例如物体位姿估计,三维重建,摄像头标定等。
core——核心功能模块。主要包含OpenCV库的基础结构及基本操作,例如OpenCV基本数据结构,绘图函数,数组操作相关函数,动态数据结构等。
dnn——深度学习模块。这个模块是OpenCV 4版本的一个特色,其主要包括构建神经网络,加载序列化网络模型等。
features2d——其功能主要为处理图像特征点,例如特征检测,描述与匹配等。
flann——Fast Library for Approximate Nearest Neighbors(快速近似最近邻库)的缩写。这个模块是高维的近似近邻快速搜索算法库,主要包含快速近似近邻搜索与聚类等。
gapi——这个模块是OpenCV 4版本新增的,加速常规的图像处理。与其他模块相比,这个模块主要充当框架,而不是某些特定的计算机视觉算法。
highgui——高层GUI,包含创建和操作显示图像的窗口,处理鼠标事件以及键盘指令,提供图形交互可视化界面等。
imgcodecs——图像文件读取与保存模块,主要用于图像文件读取与保存。
imgproc——重要的图像处理模块,主要包括图像滤波,几何变换,直方图,特征检测与目标检测等。
ml——机器学习模块,主要为统计分类,回归和数据聚类等。
objdetect——目标检测模块,主要用于图像目标检测,例如检测Haar特征。
photo——计算摄影模块,主要包含图像修复和去噪等。
stitching——图像拼接模块,主要包含特征点寻找与匹配图像,估计旋转,自动校准,接缝估计等图像拼接的相关内容。
video——视频分析模块,主要包含运动估计,背景分离,对象跟踪等视频处理相关内容。
videoio——视频输入/输出模块,主要用于读取/写入视频或者图像序列。
Mat类:OpenCV提供了一个Mat类用于存储矩阵数据。