OpenCV(开源计算机视觉库)是一个专注于实时计算机视觉的全面库,包含了丰富的工具和功能。以下是 OpenCV 中一些关键知识点的详细列表:
-
核心功能
基本结构:Mat、Scalar、Point、Size、Rect 等。
图像 I/O:读取、写入和显示图像。
基本操作:访问和修改像素值、创建掩膜、绘制形状等。
算术运算:对图像进行加、减、乘、除操作。 -
图像处理
颜色空间:不同颜色空间(BGR、RGB、HSV 等)之间的转换。
阈值处理:二值化、自适应阈值和 Otsu 阈值。
平滑/模糊:高斯滤波、中值滤波和双边滤波。
形态学操作:腐蚀、膨胀、开运算、闭运算和形态梯度。
边缘检测:Sobel、Scharr、拉普拉斯和 Canny 边缘检测。
梯度计算:使用 Sobel 和 Scharr 算子计算图像梯度。
直方图分析:计算、归一化、均衡化、反投影。
图像金字塔:高斯金字塔、拉普拉斯金字塔和图像融合。 -
几何变换
仿射变换:缩放、旋转、平移和剪切。
透视变换:使用单应性扭曲图像。
图像调整大小:使用不同插值方法进行上采样和下采样。
图像旋转:通过仿射变换旋转图像。
图像裁剪:提取感兴趣区域(ROI)。 -
特征检测与描述
角点和边缘:Harris 角点检测、Shi-Tomasi 角点检测。
斑点检测:SimpleBlobDetector、连通组件。
关键点检测:SIFT、SURF、ORB、BRIEF、FAST 等。
描述符提取:创建像 SIFT、SURF、ORB 的特征描述符。
特征匹配:暴力匹配、基于 FLANN 的匹配、RANSAC。 -
物体检测与识别
模板匹配:通过模板图像找到物体。
轮廓检测:找到和处理轮廓、凸包。
霍夫变换:使用霍夫变换进行线和圆的检测。
人脸检测:Haar 级联、LBP 级联和基于 DNN 的人脸检测。
物体检测模型:使用 DNN 模块的 SSD、YOLO、Faster R-CNN。
物体识别的特征匹配:使用特征描述符进行物体识别。 -
摄像机标定与 3D 视觉
摄像机标定:估计内部和外部参数。
立体视觉:视差图、3D 重建。
深度图:从立体图像生成深度图。
姿态估计:使用 solvePnP 和 ArUco 标记估计物体姿态。
3D 重建:运动恢复结构、点云生成。 -
视频分析
视频捕捉:访问摄像头和视频文件。
背景减法:提取前景物体。
光流:使用 Lucas-Kanade 方法计算图像中的运动。
目标跟踪:MeanShift、CamShift、KLT 和基于 DNN 的跟踪器(例如 GOTURN)。
运动检测:检测和分析视频序列中的运动。 -
机器学习
机器学习算法:SVM、k-NN、决策树、随机森林、KMeans 聚类等。
模型训练与评估:使用 OpenCV 训练和评估机器学习模型。
深度学习集成:使用 OpenCV 的 DNN 模块加载和运行深度学习模型。 -
图像分割
阈值处理技术:二值化、自适应阈值、Otsu 阈值。
分水岭算法:使用分水岭算法进行分割。
GrabCut 算法:使用 GrabCut 进行前景提取。
超像素分割:SLIC 超像素。 -
计算摄影
图像修复:填补图像中缺失的部分。
HDR 成像:高动态范围成像和色调映射。
全景拼接:将多张图像拼接成全景图。
无缝裁剪:内容感知图像缩放。 -
增强现实
ArUco 标记:检测和使用 ArUco 标记。
姿态估计:使用标记估计摄像头姿态。
叠加虚拟物体:通过在真实场景上叠加虚拟物体来实现增强现实。 -
文本与图形
文本绘制:在图像上绘制文本。
形状与线条:绘制线条、圆形、矩形和其他形状。
图像注释:用边界框、标签等注释图像。 -
文件 I/O 和格式
图像格式:读取和写入各种格式的图像(JPEG、PNG、TIFF 等)。
视频格式:读取和写入各种格式的视频(AVI、MP4 等)。
图像压缩:以不同格式压缩图像。
图像和视频编解码器:使用不同的编解码器进行视频处理。 -
高级 API
人脸识别:使用 OpenCV 实现人脸识别。
物体检测 API:使用预训练模型进行物体检测。
文本检测与识别:使用 OCR 检测和识别图像中的文本。 -
工具
定时器与性能测量:使用定时器测量代码性能。
并行处理:在 OpenCV 中利用多线程和并行性。
文件存储:使用 OpenCV 的文件存储保存和加载数据(如矩阵、向量)。
随机数生成:为各种用途生成随机数。 -
与其他库的接口
与 Numpy 集成:在 Python 中转换 OpenCV 和 NumPy 数组。
与 TensorFlow 和 PyTorch 一起使用 OpenCV:为深度学习模型预处理图像。
GStreamer:将 OpenCV 与 GStreamer 结合以处理媒体流。
CUDA 支持:利用 GPU 加速以更快地处理。 -
跨平台部署
Android 开发:在 Android 上构建和部署 OpenCV 应用。
iOS 开发:在 iOS 上构建和部署 OpenCV 应用。
嵌入式系统:在 Raspberry Pi 和其他嵌入式系统上部署 OpenCV。
WebAssembly:使用 WebAssembly 在浏览器中运行 OpenCV。 -
贡献 OpenCV
从源代码构建 OpenCV:使用自定义模块或优化编译 OpenCV。
创建自定义模块:开发并为 OpenCV 贡献自定义模块。
测试与调试:测试和调试 OpenCV 代码。