【OpenCV】OpenCV算子功能分类

在 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 → HSV
  • cv2.COLOR_BGR2LAB ------ BGR → LAB
  • cv2.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() ------ BRISK
  • cv2.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() ------ kNN
  • cv2.ml.SVM_create() ------ SVM
  • cv2.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()、光流

相关推荐
契合qht53_shine1 小时前
OpenCV 从入门到精通(day_03)
人工智能·opencv·计算机视觉
闭月之泪舞2 小时前
OpenCv(五)——边缘检测
人工智能·计算机视觉
知舟不叙3 小时前
OpenCV的基础操作
人工智能·opencv·计算机视觉
编程在手天下我有4 小时前
计算机视觉(CV)技术的优势和挑战
计算机视觉
IT从业者张某某5 小时前
机器学习-04-分类算法-03KNN算法案例
算法·机器学习·分类
AI绘画月月6 小时前
AI绘画 | Stable Diffusion 图片背景完美替换
图像处理·人工智能·计算机视觉·ai作画·stable diffusion·midjourney·sd
jndingxin6 小时前
OpenCV 图形API(4)内核 API
opencv
闲人编程7 小时前
图像插值算法(最近邻/双线性/立方卷积)
python·opencv·图像识别
xcLeigh9 小时前
计算机视觉入门:从像素到理解的旅程
人工智能·python·opencv·计算机视觉