在 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() 、光流 |