在 OpenCV 中,算子(Operators)可以根据功能分类为不同的类别,主要包括图像处理、特征检测、几何变换等。以下是 OpenCV 算子的主要分类:
1️⃣ 图像处理算子(Image Processing Operators)
用于对图像进行平滑、锐化、边缘检测等操作。
📌 滤波与去噪
cv2.blur()------ 均值滤波cv2.GaussianBlur()------ 高斯滤波cv2.medianBlur()------ 中值滤波cv2.bilateralFilter()------ 双边滤波(保留边缘)cv2.fastNlMeansDenoising()------ 非局部均值去噪
📌 边缘检测
cv2.Sobel()------ Sobel 算子cv2.Scharr()------ Scharr 算子(更精确的 Sobel 变种)cv2.Laplacian()------ 拉普拉斯算子cv2.Canny()------ Canny 边缘检测
2️⃣ 形态学算子(Morphological Operators)
用于处理二值图像(如去噪、骨架化、填充等)。
cv2.erode()------ 腐蚀cv2.dilate()------ 膨胀cv2.morphologyEx()------ 形态学变换(包括开运算、闭运算、梯度、顶帽、黑帽)cv2.MORPH_OPEN------ 开运算(去除小噪点)cv2.MORPH_CLOSE------ 闭运算(填充小孔洞)cv2.MORPH_GRADIENT------ 形态梯度cv2.MORPH_TOPHAT------ 顶帽cv2.MORPH_BLACKHAT------ 黑帽
3️⃣ 颜色空间转换算子(Color Space Operators)
用于颜色空间变换。
cv2.cvtColor()------ 颜色空间转换(RGB ↔ 灰度、HSV、YCrCb、Lab 等)cv2.split()------ 拆分通道cv2.merge()------ 合并通道
常见的转换模式:
cv2.COLOR_BGR2GRAY------ BGR → 灰度cv2.COLOR_BGR2HSV------ BGR → HSVcv2.COLOR_BGR2LAB------ BGR → LABcv2.COLOR_BGR2YCrCb------ BGR → YCrCb
4️⃣ 几何变换算子(Geometric Transform Operators)
用于图像的缩放、旋转、平移、透视变换等。
cv2.resize()------ 图像缩放cv2.warpAffine()------ 线性变换(平移、旋转、仿射变换)cv2.warpPerspective()------ 透视变换cv2.getRotationMatrix2D()------ 生成旋转矩阵cv2.getAffineTransform()------ 生成仿射变换矩阵cv2.getPerspectiveTransform()------ 生成透视变换矩阵
5️⃣ 特征检测与匹配(Feature Detection & Matching)
用于检测关键点、描述子、匹配特征点等。
📌 角点检测
cv2.cornerHarris()------ Harris 角点检测cv2.goodFeaturesToTrack()------ Shi-Tomasi 角点检测
📌 关键点检测
cv2.SIFT_create()------ SIFT(尺度不变特征变换)cv2.SURF_create()------ SURF(加速鲁棒特征,OpenCV 3.4 以上需手动编译)cv2.ORB_create()------ ORB(快速、免专利)cv2.BRISK_create()------ BRISKcv2.AKAZE_create()------ AKAZE
📌 特征匹配
cv2.BFMatcher()------ 暴力匹配cv2.FlannBasedMatcher()------ FLANN(快速最近邻搜索)
6️⃣ 轮廓检测(Contour Detection)
用于检测图像中的闭合轮廓。
cv2.findContours()------ 轮廓检测cv2.drawContours()------ 画出轮廓cv2.approxPolyDP()------ 轮廓近似cv2.convexHull()------ 计算凸包cv2.boundingRect()------ 计算最小外接矩形cv2.minEnclosingCircle()------ 计算最小外接圆
7️⃣ 直线和形状检测(Line & Shape Detection)
用于检测图像中的直线、圆等几何形状。
cv2.HoughLines()------ 经典霍夫变换检测直线cv2.HoughLinesP()------ 概率霍夫变换(更快)cv2.HoughCircles()------ 霍夫圆检测cv2.fitEllipse()------ 拟合椭圆cv2.fitLine()------ 拟合直线
8️⃣ 直方图处理(Histogram Processing)
用于图像对比度增强、均衡化等。
cv2.calcHist()------ 计算直方图cv2.equalizeHist()------ 直方图均衡化cv2.createCLAHE()------ 自适应直方图均衡化(CLAHE)
9️⃣ 机器学习相关(ML & DNN)
📌 传统机器学习
cv2.ml.KNearest_create()------ kNNcv2.ml.SVM_create()------ SVMcv2.ml.DTrees_create()------ 决策树cv2.ml.ANN_MLP_create()------ 多层感知机(神经网络)
📌 深度学习(DNN 模块)
cv2.dnn.readNet()------ 读取预训练神经网络cv2.dnn.blobFromImage()------ 预处理图像以输入神经网络
🔟 视频处理(Video Processing)
用于视频的帧处理、背景建模等。
cv2.VideoCapture()------ 读取视频/摄像头cv2.VideoWriter()------ 保存视频cv2.calcOpticalFlowPyrLK()------ Lucas-Kanade 光流cv2.calcOpticalFlowFarneback()------ Farneback 光流cv2.createBackgroundSubtractorMOG2()------ 背景建模
📝 总结
| 类别 | 主要算子 |
|---|---|
| 图像处理 | 滤波、边缘检测(Sobel、Canny) |
| 形态学处理 | 腐蚀、膨胀、开闭运算 |
| 颜色空间转换 | cvtColor()(RGB ↔ HSV) |
| 几何变换 | resize()、warpAffine() |
| 特征检测 | Harris、SIFT、ORB |
| 轮廓检测 | findContours()、drawContours() |
| 形状检测 | 霍夫变换、椭圆拟合 |
| 直方图处理 | 直方图均衡化(CLAHE) |
| 机器学习 | SVM、kNN、DNN |
| 视频处理 | VideoCapture()、光流 |