全面列举OpenCV 各模块中常见的算子

专栏地址:

《 OpenCV功能使用详解200篇 》

《 OpenCV算子使用详解300篇 》

《 Halcon算子使用详解300篇 》

内容持续更新 ,欢迎点击订阅


OpenCVSharp 是 OpenCV 的 .NET 封装,几乎涵盖了 OpenCV 的所有功能。OpenCV 本身包含了大量的模块(或称子模块),每个模块都包含了不同的算子和功能。下面是 OpenCVSharp 中所有模块的详细列举,并描述了各模块中常见的算子(函数)。此回答力求全面,涵盖主要的模块和算子。

1. Core 模块 (core)

该模块是 OpenCV 的基础,包含了矩阵、数据结构、基本运算和矩阵处理功能。

常用算子:
  • Cv2.Add(), Cv2.Subtract(), Cv2.Multiply(), Cv2.Divide()
  • Cv2.Min(), Cv2.Max(), Cv2.Mean(), Cv2.Median()
  • Cv2.AbsDiff(), Cv2.BitwiseAnd(), Cv2.BitwiseOr(), Cv2.BitwiseXor(), Cv2.BitwiseNot()
  • Cv2.Normalize(), Cv2.NormalizeSum()
  • Cv2.ElemSize(), Cv2.Total(), Cv2.MatType()
  • Cv2.Mat(), Cv2.MatOfInt(), Cv2.MatOfFloat()
  • Cv2.Concat(), Cv2.Split(), Cv2.Merge()
  • Cv2.Sort(), Cv2.Randu(), Cv2.Randn()
  • Cv2.Multiply(), Cv2.AbsDiff()
  • Cv2.MatExpr()
  • Cv2.MeanStdDev()
  • Cv2.CornerSubPix()
  • Cv2.Rect(), Cv2.Size(), Cv2.Point()

2. Image Processing 模块 (imgproc)

图像处理模块用于处理图像的转换、滤波、几何变换等。

常用算子:
  • 颜色空间转换
    • Cv2.CvtColor()
    • Cv2.BGR2GRAY, Cv2.GRAY2BGR, Cv2.RGB2HSV
  • 几何变换
    • Cv2.Resize(), Cv2.PyrDown(), Cv2.PyrUp()
    • Cv2.GetAffineTransform(), Cv2.GetPerspectiveTransform()
    • Cv2.WarpAffine(), Cv2.WarpPerspective()
  • 滤波操作
    • Cv2.GaussianBlur(), Cv2.MedianBlur(), Cv2.BilateralFilter()
    • Cv2.Sobel(), Cv2.Laplacian(), Cv2.Canny(), Cv2.Scharr()
  • 形态学操作
    • Cv2.Erode(), Cv2.Dilate(), Cv2.MorphologyEx()
  • 阈值操作
    • Cv2.Threshold(), Cv2.AdaptiveThreshold()
    • Cv2.InRange()
  • 边缘检测
    • Cv2.Canny(), Cv2.HoughLines(), Cv2.HoughCircles()
  • 轮廓处理
    • Cv2.FindContours(), Cv2.DrawContours(), Cv2.ApproxPolyDP()
  • 角点检测
    • Cv2.GoodFeaturesToTrack(), Cv2.CornerHarris()
  • 直方图计算
    • Cv2.CalcHist(), Cv2.NormalizeHist()
  • 模板匹配
    • Cv2.MatchTemplate(), Cv2.MinMaxLoc()
  • 均值滤波与高斯滤波
    • Cv2.BoxFilter(), Cv2.Blur()

3. Features2D 模块 (features2d)

用于处理特征点检测与匹配,包括常见的特征提取和匹配算法,如 ORB、SIFT、SURF 等。

常用算子:
  • 特征检测与描述符计算
    • Cv2.ORB_Create(), Cv2.SIFT_Create(), Cv2.SURF_Create()
    • Cv2.FastFeatureDetector_Create(), Cv2.AKAZE_Create()
    • Cv2.BRIEF(), Cv2.BRISK()
    • Cv2.FAST()
  • 特征匹配
    • Cv2.BFMatcher(), Cv2.FlannBasedMatcher()
    • Cv2.DescriptorMatcher(), Cv2.BowImgDescriptorExtractor()
    • Cv2.Matches() (KNN 或 Brute Force Matcher)
  • 绘制特征点
    • Cv2.DrawKeypoints(), Cv2.DrawMatches()

4. Video 模块 (video)

该模块用于视频分析,包括光流估计、背景分割和对象追踪等。

常用算子:
  • 光流估计
    • Cv2.CalcOpticalFlowFarneback(), Cv2.calcOpticalFlowPyrLK()
  • 背景建模
    • Cv2.BackgroundSubtractorMOG2(), Cv2.BackgroundSubtractorKNN()
  • 视频读取与写入
    • Cv2.VideoCapture(), Cv2.VideoWriter()
  • 视频跟踪
    • Cv2.TrackerMOSSE_Create(), Cv2.TrackerKCF_Create()
    • Cv2.CamShift(), Cv2.meanShift()

5. Machine Learning 模块 (ml)

该模块提供了机器学习算法的实现,包括分类器、回归分析、聚类等。

常用算子:
  • SVM
    • Cv2.ml.SVM_Create()
    • Cv2.ml.SVM_Train(), Cv2.ml.SVM_Predict()
  • K近邻
    • Cv2.ml.KNearest_Create()
    • Cv2.ml.KNearest_FindNearest()
  • 决策树
    • Cv2.ml.DecisionTree_Create()
  • 随机森林
    • Cv2.ml.RTrees_Create()
  • 神经网络
    • Cv2.ml.ANN_MLP_Create()
  • Boosting
    • Cv2.ml.Boost_Create()
  • 聚类算法
    • Cv2.ml.KMeans(), Cv2.ml.EM_Create()
  • Logistic回归
    • Cv2.ml.LogisticRegression_Create()

6. Object Detection 模块 (objdetect)

该模块用于物体检测,如人脸检测、行人检测、眼睛检测等。

常用算子:
  • 人脸检测
    • Cv2.CascadeClassifier()
    • Cv2.CascadeClassifier_DetectMultiScale()
  • 行人检测
    • Cv2.HOGDescriptor()
    • Cv2.HOGDescriptor_DetectMultiScale()
  • Hough变换
    • Cv2.HoughLines(), Cv2.HoughCircles()

7. Calibration and 3D Reconstruction 模块 (calib3d)

该模块涉及相机标定、三维重建和相机姿态估计等。

常用算子:
  • 相机标定
    • Cv2.CalibrateCamera()
    • Cv2.StereoCalibrate(), Cv2.StereoRectify()
  • 投影与重建
    • Cv2.ProjectPoints(), Cv2.ReprojectImageTo3D()
    • Cv2.FindHomography()
  • 深度图与视差图
    • Cv2.StereoBMCreate(), Cv2.StereoSGBMCreate()
  • 相机坐标系与世界坐标系转换
    • Cv2.Rodrigues()

8. Deep Neural Networks 模块 (dnn)

该模块用于加载和使用深度学习模型。

常用算子:
  • 模型加载
    • Cv2.dnn.ReadNet(), Cv2.dnn.ReadNetFromTensorflow(), Cv2.dnn.ReadNetFromCaffe()
    • Cv2.dnn.ReadNetFromDarknet()
  • 图像预处理
    • Cv2.dnn.BlobFromImage()
    • Cv2.dnn.BlobFromImages()
  • 模型推理
    • Cv2.dnn.Forward()
    • Cv2.dnn.SetInput()
  • 层获取与网络设置
    • Cv2.dnn.GetLayerNames(), Cv2.dnn.GetUnconnectedOutLayers()

9. HighGUI 模块 (highgui)

highgui 是 OpenCV 用来处理图形用户界面(GUI)和显示图像、视频的模块。它提供了与窗口、鼠标和键盘交互的接口。这个模块在图像处理的过程中非常常用,尤其是用来显示处理结果。

常用算子:
  • 窗口管理

    • Cv2.NamedWindow(): 创建一个窗口。
    • Cv2.DestroyWindow(): 销毁指定的窗口。
    • Cv2.DestroyAllWindows(): 销毁所有窗口。
    • Cv2.ResizeWindow(): 改变窗口大小。
    • Cv2.MoveWindow(): 移动窗口到指定位置。
    • Cv2.GetWindowProperty(): 获取窗口属性。
  • 图像显示与等待

    • Cv2.ImShow(): 显示图像在指定的窗口中。
    • Cv2.WaitKey(): 等待键盘输入,通常与图像显示配合使用,用于暂停程序的执行,直到用户按下某个键。
    • Cv2.ImWrite(): 将图像保存到指定路径。
  • 鼠标回调

    • Cv2.SetMouseCallback(): 设置鼠标事件回调函数,处理鼠标点击、拖动等事件。

10. Imgcodecs 模块 (imgcodecs)

imgcodecs 模块负责图像的编码和解码,通常用来读取和保存图像。它可以处理多种图像格式,如 .jpg.png.bmp.tiff 等。

常用算子:
  • 图像读取与保存

    • Cv2.ImRead(): 读取图像文件并将其加载到内存中,支持各种格式。
    • Cv2.ImWrite(): 将图像保存为指定文件格式。
  • 图像读取的标志位

    • Cv2.ImReadModes.Grayscale: 以灰度模式读取图像。
    • Cv2.ImReadModes.Color: 以彩色模式读取图像。
    • Cv2.ImReadModes.Unchanged: 不做任何解码,直接加载原始图像数据。
  • 图像编码参数

    • Cv2.ImEncode(): 将图像数据压缩成指定格式的字节流。
    • Cv2.ImDecode(): 将字节流解码成图像。

11. Flann (Fast Library for Approximate Nearest Neighbors) 模块 (flann)

Flann 模块提供了高效的近似最近邻搜索算法,通常用于特征匹配、数据挖掘和搜索引擎等应用。它提供了多种高效的算法来进行快速的最近邻查询。

常用算子:
  • FLANN匹配器

    • Cv2.FlannBasedMatcher(): 创建一个 FLANN 匹配器,适用于描述符匹配(如 SURF、SIFT)。
    • Cv2.FlannBasedMatcher.KnnMatch(): 使用 K 近邻算法进行描述符匹配。
  • FLANN搜索参数

    • Cv2.FlannBasedMatcher.Parameters(): 设置 FLANN 搜索参数(例如:checks,用于控制近似搜索的精度与速度)。

12. Contrib 模块 (contrib)

contrib 是 OpenCV 的扩展模块,包含了一些实验性或非标准的算法和工具。这个模块并非 OpenCV 核心的一部分,但它提供了许多有用的工具,特别是一些较为先进的计算机视觉算法和功能。

常用算子:
  • Deep Learning 模块

    • OpenCV 提供了许多深度学习相关的工具,如集成 TensorFlow、Caffe、Torch 等框架的预训练模型,进行目标检测、分类等任务。
  • 增强现实 (AR)

    • Cv2.AugmentedReality(): 用于增强现实应用中的图像注册和匹配。
  • Extra Feature Detectors

    • LSD (Line Segment Detector)Cv2.LSDDetector()
    • SimpleBlobDetectorCv2.SimpleBlobDetector()
  • OCR (Optical Character Recognition)

    • 集成 Tesseract OCR 引擎,通过 OpenCV 处理文本提取,Cv2.Text()

13. Text 模块 (text)

OpenCV 的 text 模块专门用于文本检测与识别。它通常与 OCR 相关联,常用于图像中的文本提取与分析。

常用算子:
  • 文本检测

    • Cv2.Text.DetectText(): 检测图像中的文本区域。
  • 文本提取

    • Cv2.Text.RecognizeText(): 从检测出的文本区域提取文本。
  • OCR 使用

    • Tesseract 引擎集成,提供一个简单的接口来识别图片中的文字。

14. Tracking 模块 (tracking)

OpenCV 中的 tracking 模块用于视频中的物体跟踪。它提供了多种对象跟踪算法,这些算法可以通过视频序列来追踪物体的运动。

常用算子:
  • KCF (Kernelized Correlation Filters)

    • Cv2.TrackerKCF_create(): 创建一个 KCF 跟踪器。
  • MOSSE (Minimum Output Sum of Squared Error)

    • Cv2.TrackerMOSSE_create(): 创建一个 MOSSE 跟踪器。
  • BOOSTING, MIL, TLD 等其他跟踪算法

    • Cv2.TrackerBoosting_create(), Cv2.TrackerMIL_create(), Cv2.TrackerTLD_create() 等。
  • 更新和获取位置

    • Cv2.Tracker.Update(): 更新跟踪器的状态。
    • Cv2.Tracker.GetPosition(): 获取当前跟踪目标的位置。

15. Stereo Vision 模块 (stereo)

该模块处理立体视觉和深度图的计算,常用于三维重建、立体匹配和深度估计。

常用算子:
  • 立体匹配

    • Cv2.StereoBM_create(): 创建一个基于块匹配的立体匹配算法。
    • Cv2.StereoSGBM_create(): 创建一个基于加权立体图像块匹配的算法,通常用于更精细的深度图生成。
  • 深度图生成

    • Cv2.StereoBM.compute(): 计算左右图像对的深度图。
    • Cv2.StereoSGBM.compute(): 基于 SGBM 算法计算深度图。
  • 视差图

    • Cv2.ReprojectImageTo3D(): 将视差图转为三维坐标。

16. Photo 模块 (photo)

photo 模块提供了图像修复和增强的功能,常用于图像的去噪、颜色校正、曝光合成等。

常用算子:
  • 去噪

    • Cv2.FastNlMeansDenoising(), Cv2.FastNlMeansDenoisingColored(): 快速非局部均值去噪。
  • 图像融合与曝光合成

    • Cv2.CreateMergeDebevec(): 使用 Debevec 算法合成曝光。
    • Cv2.CreateMergeMertens(): 使用 Mertens 算法进行多曝光合成。
  • 光照校正

    • Cv2.CorrectLighting():进行光照校正。

总结

OpenCVSharp 和 OpenCV 提供了广泛的图像处理功能和算法,涵盖了从基本的图像操作到复杂的计算机视觉任务的所有内容。从图像的读取、处理、显示,到特征提取、物体检测、机器学习、深度学习等高级应用,都有丰富的实现。这些功能帮助开发者在图像和视频分析、增强现实、自动驾驶、医学图像处理、安防监控等领域中进行高效的开发。

每个模块和算子都可以根据具体的应用需求进行组合和优化,从而实现各种强大的功能。希望这个详细的介绍对你理解 OpenCVSharp 和 OpenCV 的模块及功能有所帮助!


专栏地址:

《 OpenCV功能使用详解200篇 》

《 OpenCV算子使用详解300篇 》

《 Halcon算子使用详解300篇 》

内容持续更新 ,欢迎点击订阅


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

观视界

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值