OpenCV 的最新版本包含了 500 多个算子,这些算子覆盖了图像处理、计算机视觉、机器学习、深度学习、视频分析等多个领域。为了方便使用,OpenCV 将这些算子分为多个模块,每个模块承担特定的功能。
以下是 OpenCV 中各模块及其算子的详细分类:
1. 核心模块(Core)
功能:
提供基础数据结构(如 Mat
)、数学运算、内存管理、输入输出等基本操作。
常用算子:
- 数学运算:
cv::add
,cv::subtract
,cv::multiply
,cv::divide
- 数据类型转换:
cv::convertTo
,cv::cvtColor
- 统计与统计量:
cv::mean
,cv::sum
,cv::minMaxLoc
- 矩阵操作:
cv::transpose
,cv::invert
- 随机数生成:
cv::randu
2. 图像处理模块(ImgProc)
功能:
处理图像中的基本操作,如滤波、边缘检测、几何变换等。
子分类及常用算子:
-
滤波操作:
- 高斯滤波:
cv::GaussianBlur
- 中值滤波:
cv::medianBlur
- 双边滤波:
cv::bilateralFilter
- 均值滤波:
cv::blur
- 高斯滤波:
-
边缘检测:
- Sobel 算子:
cv::Sobel
- Canny 边缘检测:
cv::Canny
- Laplacian 算子:
cv::Laplacian
- Sobel 算子:
-
几何变换:
- 旋转:
cv::rotate
- 图像缩放:
cv::resize
- 仿射变换:
cv::warpAffine
- 透视变换:
cv::warpPerspective
- 旋转:
-
形态学操作:
- 腐蚀与膨胀:
cv::erode
,cv::dilate
- 开运算与闭运算:
cv::morphologyEx
- 腐蚀与膨胀:
-
直方图与图像增强:
- 直方图均衡化:
cv::equalizeHist
- 直方图计算:
cv::histCalc
- 直方图均衡化:
3. 特征检测与描述(Features2D)
功能:
提取图像中的关键点和描述符,用于特征匹配和目标识别。
常用算子:
-
角点检测:
- Harris 角点:
cv::cornerHarris
- Shi-Tomasi 角点:
cv::goodFeaturesToTrack
- Harris 角点:
-
特征点检测:
- SIFT(尺度不变特征转换):
cv::SIFT
- SURF(加速稳健特征):
cv::SURF
- ORB(快速旋转不变特征):
cv::ORB
- BRISK(二进制旋转不变特征):
cv::BRISK
- SIFT(尺度不变特征转换):
-
描述符匹配:
- 暴力匹配:
cv::BFMatcher
- FLANN 匹配:
cv::FlannBasedMatcher
- 暴力匹配:
4. 目标检测与识别(ObjDetect)
功能:
检测图像中的目标,如人脸、行人、车辆等。
常用算子:
- Haar 特征分类器:
cv::CascadeClassifier::detectMultiScale
- HOG 特征检测:
cv::HOGDescriptor::detect
- 模板匹配:
cv::matchTemplate
5. 相机校准与三维重建(Calib3D)
功能:
计算相机的内外参数,进行立体匹配与三维重建。
常用算子:
- 相机标定:
cv::calibrateCamera
,cv::findChessboardCorners
- 立体匹配:
- 基于块的匹配:
cv::StereoBM
- 半全局匹配:
cv::StereoSGBM
- 基于块的匹配:
- 3D 重建:
- 三角化:
cv::triangulatePoints
- 重投影:
cv::reprojectImageTo3D
- 三角化:
6. 机器学习模块(ML)
功能:
提供常用的机器学习算法支持。
常用算法与算子:
- 支持向量机(SVM):
cv::ml::SVM
- 决策树:
cv::ml::DTrees
- 逻辑回归:
cv::ml::LogisticRegression
- 聚类:
cv::ml::KMeans
- 主成分分析(PCA):
cv::PCA
7. 深度学习模块(DNN)
功能:
支持加载和推理深度学习模型,集成多种框架(如 TensorFlow、Caffe、ONNX)。
常用算子:
- 模型加载:
cv::dnn::readNetFromCaffe
,cv::dnn::readNetFromTensorflow
- 图像预处理:
cv::dnn::blobFromImage
- 前向传播:
cv::dnn::Net::forward
8. 视频分析与处理(Video)
功能:
提供视频处理与分析工具,如光流计算、背景建模、前景分割。
常用算子:
- 光流计算:
cv::calcOpticalFlowPyrLK
- 背景建模与前景分割:
cv::BackgroundSubtractorMOG2
,cv::BackgroundSubtractorKNN
9. 图像拼接(Stitching)
功能:
将多幅图像拼接成一幅完整的图像,常用于全景图的生成。
常用算子:
- 图像拼接:
cv::Stitcher::create
10. 其他模块(Contrib)
OpenCV Contrib 模块提供了许多额外的算法和扩展功能,通常用于特定的应用领域。
常用模块与算子:
- xfeatures2d(扩展的特征检测与描述符):
cv::xfeatures2d::SIFT
,cv::xfeatures2d::SURF
- ximgproc(扩展图像处理):
cv::ximgproc::guidedFilter
- face(人脸识别):
cv::face::EigenFaceRecognizer
,cv::face::FisherFaceRecognizer
总结
OpenCV 的最新版本包含了 500 多个算子,涵盖了图像处理、目标检测、特征提取、机器学习、深度学习、视频分析等多个领域。每个模块的算子设计目标明确,能够帮助用户快速实现各种计算机视觉任务。对于深度学习、3D 重建和目标识别等领域,OpenCV 也提供了丰富的工具与算法支持。