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