C#版OpenCv常用函数大全

news2025/1/10 21:49:56

OpenCvSharp 是 OpenCV 的NET封装,提供了丰富的图像处理和计算机视觉功能。以下是一些常用函数及其详细说明。

1. 图像读取与显示

Cv2.ImRead

  • 功能:读取图像文件并返回一个 Mat 对象。
  • 用法
  • Mat image = Cv2.ImRead("path/to/image.jpg");

Cv2.ImShow

  • 功能:在窗口中显示图像。
  • 用法
  • Cv2.ImShow("Window Name", image);

Cv2.WaitKey

  • 功能:等待键盘输入,通常用于暂停窗口。
  • 用法
  • Cv2.WaitKey(0); // 等待任意键

2. 图像处理

Cv2.CvtColor

  • 功能:转换图像颜色空间(如 BGR 转灰度、RGB 转 HSV 等)。
  • 用法
  • Mat grayImage = new Mat();
  • Cv2.CvtColor(image, grayImage, ColorConversion.BgrToGray);

Cv2.GaussianBlur

  • 功能:对图像应用高斯模糊,减少噪声。
  • 用法
  • Mat blurredImage = new Mat();
  • Cv2.GaussianBlur(image, blurredImage, new Size(5, 5), 0);

Cv2.Canny

  • 功能:使用 Canny 算法进行边缘检测。
  • 用法
  • Mat edges = new Mat();
  • Cv2.Canny(grayImage, edges, 100, 200);

3. 图像变换

Cv2.Resize

  • 功能:调整图像大小。
  • 用法
  • Mat resizedImage = new Mat();
  • Cv2.Resize(image, resizedImage, new Size(200, 200));

Cv2.Rotate

  • 功能:旋转图像。
  • 用法
  • Mat rotatedImage = new Mat();
  • Cv2.Rotate(image, rotatedImage, RotateFlags.Rotate90Clockwise);

Cv2.WarpAffine

  • 功能:对图像进行仿射变换。
  • 用法
  • Mat transformedImage = new Mat();
  • Mat M = Cv2.GetRotationMatrix2D(new Point2f(image.Width / 2, image.Height / 2), 45, 1);
  • Cv2.WarpAffine(image, M, image.Size(), transformedImage);

4. 形态学操作

Cv2.Erode

  • 功能:腐蚀操作,减少图像中的白色区域。
  • 用法
  • Mat erodedImage = new Mat(); Cv2.Erode(binaryImage, erodedImage, null, new Point(-1, -1), 1);

Cv2.Dilate

  • 功能:膨胀操作,增加图像中的白色区域。
  • 用法
  • Mat dilatedImage = new Mat(); Cv2.Dilate(binaryImage, dilatedImage, null, new Point(-1, -1), 1);

5. 特征检测与描述

Cv2.FindContours

  • 功能:查找图像中的轮廓。
  • 用法
  • Cv2.FindContours(binaryImage, out Point[][] contours, out HierarchyIndex[] hierarchy, RetrievalModes.Tree, ContourApproximation.Simple);

Cv2.DrawContours

  • 功能:在图像上绘制轮廓。
  • 用法
  • Cv2.DrawContours(image, contours, -1, Scalar.Red, 2);

6. 物体检测与识别

CvDnn.ReadNetFromDarknet

  • 功能:从 Darknet 配置文件和权重文件加载 YOLO 模型。
  • 用法
  • var net = CvDnn.ReadNetFromDarknet("yolov4.cfg", "yolov4.weights");

CvDnn.BlobFromImage

  • 功能:将图像转换为网络输入格式的 blob。
  • 用法
  • var blob = CvDnn.BlobFromImage(image, 1 / 255.0, new Size(416, 416), new Scalar(0, 0, 0), true, false);

CvDnn.Forward

  • 功能:执行前向推理。
  • 用法
  • var output = net.Forward();

7. 其他实用函数

Cv2.PutText

  • 功能:在图像上绘制文本。
  • 用法
  • Cv2.PutText(image, "Hello, OpenCV!", new Point(10, 30), HersheyFonts.HersheySimplex, 1, Scalar.White, 2);

Cv2.Rectangle

  • 功能:在图像上绘制矩形。
  • 用法
  • Cv2.Rectangle(image, new Rect(50, 50, 100, 100), Scalar.Red, 2);

Cv2.Circle

  • 功能:在图像上绘制圆形。
  • 用法
  • Cv2.Circle(image, new Point(100, 100), 50, Scalar.Blue, 2);

8. 视频处理

Cv2.VideoCapture

  • 功能:打开视频文件或摄像头进行视频捕捉。
  • 用法
  • using (var capture = new VideoCapture(0)) // 0 表示默认摄像头
  • {
  • Mat frame = new Mat();
  • while (true)
  • {
  • capture.Read(frame);
  • if (frame.Empty()) break; Cv2.ImShow("Video", frame);
  • if (Cv2.WaitKey(30) >= 0) break; // 每帧延迟 30ms
  • }
  • }

Cv2.VideoWriter

  • 功能:将图像序列写入视频文件。
  • 用法
  • using (var writer = new VideoWriter("output.avi", FourCC.MJPG, 30, new Size(640, 480)))
  • { for (int i = 0; i < 100; i++)
  • {
  • Mat frame = new Mat(480, 640, MatType.CV_8UC3, new Scalar(0, 0, 255)); // 创建红色帧 writer.Write(frame);
  • }
  • }

9. 颜色空间转换

Cv2.Split

  • 功能:将多通道图像分离为单通道图像。
  • 用法
  • Mat[] channels = Cv2.Split(image); Mat blueChannel = channels[0]; // 蓝色通道
  • Mat greenChannel = channels[1]; // 绿色通道 Mat redChannel = channels[2]; // 红色通道

Cv2.Merge

  • 功能:将多个单通道图像合并为多通道图像。
  • 用法
  • Mat mergedImage = new Mat();
  • Cv2.Merge(channels, mergedImage);

10. 直方图处理

Cv2.CalcHist

  • 功能:计算图像的直方图。
  • 用法
  • int[] histSize = { 256 }; // 256 个 bins float[] ranges = { 0, 256 }; // 像素值范围
  • Mat hist = new Mat(); Cv2.CalcHist(new Mat[] { grayImage }, new int[] { 0 }, null, hist, 1, histSize, new Rangef[] { new Rangef(0, 256) });

Cv2.Normalize

  • 功能:归一化直方图。
  • 用法
  • Cv2.Normalize(hist, hist, 0, 255, NormTypes.MinMax);

11. 特征匹配

Cv2.DescribeKeypoints

  • 功能:描述关键点特征。
  • 用法
  • var orb = ORB.Create(); KeyPoint[] keypoints; Mat descriptors = new Mat(); orb.DetectAndCompute(image, null, out keypoints, descriptors);

Cv2.BFMatcher

  • 功能:使用暴力匹配器进行特征匹配。
  • 用法
  • var matcher = new BFMatcher(NormTypes.Hamming, crossCheck: true);
  • var matches = new Mat();
  • matcher.Match(descriptors1, descriptors2, matches);

12. 轮廓分析

Cv2.ApproxPolyDP

  • 功能:对轮廓进行多边形逼近。
  • 用法
  • Point[] approx = Cv2.ApproxPolyDP(contour, 0.02 * Cv2.ArcLength(contour, true), true);

Cv2.Hierarchy

  • 功能:获取轮廓的层次结构。
  • 用法
  • Cv2.FindContours(image, out Point[][] contours, out HierarchyIndex[] hierarchy, RetrievalModes.Tree, ContourApproximation.Simple);

13. 机器学习与深度学习

CvDnn.ReadNetFromTensorflow

  • 功能:从 TensorFlow 模型文件加载网络。
  • 用法
  • var net = CvDnn.ReadNetFromTensorflow("model.pb", "model.pbtxt");

CvDnn.ReadNetFromCaffe

  • 功能:从 Caffe 模型文件加载网络。
  • 用法
  • var net = CvDnn.ReadNetFromCaffe("deploy.prototxt", "model.caffemodel");

14. 其他实用功能

Cv2.GetRotationMatrix2D

  • 功能:获取旋转矩阵,用于图像旋转。
  • 用法
  • Mat M = Cv2.GetRotationMatrix2D(new Point2f(image.Width / 2, image.Height / 2), 45, 1);

Cv2.GetPerspectiveTransform

  • 功能:获取透视变换矩阵。
  • 用法
  • Point2f[] srcPoints = { new Point2f(0, 0), new Point2f(1, 0), new Point2f(0, 1) };
  • Point2f[] dstPoints = { new Point2f(0, 0), new Point2f(1, 0), new Point2f(0, 1) };
  • Mat perspectiveMatrix = Cv2.GetPerspectiveTransform(srcPoints, dstPoints);

15. 处理图像的 ROI(感兴趣区域)

Mat.RegionOfInterest

  • 功能:提取图像的感兴趣区域。
  • 用法
  • Mat roi = new Mat(image, new Rect(50, 50, 100, 100)); // 提取 (50, 50) 开始的 100x100 区域

16. 图像滤波

Cv2.MedianBlur

  • 功能:使用中值滤波去除图像噪声,特别适合去除椒盐噪声。
  • 用法
  • Mat medianBlurredImage = new Mat(); Cv2.MedianBlur(image, medianBlurredImage, 5); // 5 是滤波器大小

Cv2.BilateralFilter

  • 功能:双边滤波,能够在平滑图像的同时保留边缘。
  • 用法
  • Mat bilateralFilteredImage = new Mat();
  • Cv2.BilateralFilter(image, bilateralFilteredImage, 9, 75, 75);

17. 直方图均衡化

Cv2.EqualizeHist

  • 功能:对灰度图像进行直方图均衡化,增强对比度。
  • 用法
  • Mat equalizedImage = new Mat();
  • Cv2.EqualizeHist(grayImage, equalizedImage);

18. 轮廓特征提取

Cv2.Moments

  • 功能:计算轮廓的矩,用于特征提取。
  • 用法
  • var moments = Cv2.Moments(contour);
  • double area = moments.M00; // 轮廓面积

Cv2.MinEnclosingCircle

  • 功能:计算包围轮廓的最小圆。
  • 用法
  • Cv2.MinEnclosingCircle(contour, out Point2f center, out float radius);

19. 形状匹配

Cv2.MatchShapes

  • 功能:比较两个轮廓的形状,返回相似度。
  • 用法
  • double similarity = Cv2.MatchShapes(contour1, contour2, ShapeMatchModes.I1, 0);

20. 透视变换

Cv2.WarpPerspective

  • 功能:应用透视变换到图像。
  • 用法
  • Mat warpedImage = new Mat();
  • Mat perspectiveMatrix = Cv2.GetPerspectiveTransform(srcPoints, dstPoints);
  • Cv2.WarpPerspective(image, warpedImage, perspectiveMatrix, new Size(width, height));

21. 颜色空间转换

Cv2.CvtColor

  • 功能:转换图像颜色空间(如 BGR 转 HSV、RGB 转 LAB 等)。
  • 用法
  • Mat hsvImage = new Mat();
  • Cv2.CvtColor(image, hsvImage, ColorConversion.BgrToHsv);

22. 目标跟踪

Cv2.TrackerKCF

  • 功能:使用 KCF 算法进行目标跟踪。
  • 用法
  • var tracker = TrackerKCF.Create();
  • tracker.Init(frame, new Rect(100, 100, 50, 50)); // 初始化跟踪器
  • tracker.Update(frame, out Rect boundingBox); // 更新跟踪

23. 关键点检测

Cv2.GoodFeaturesToTrack

  • 功能:检测图像中的角点。
  • 用法
  • Point2f[] corners = Cv2.GoodFeaturesToTrack(grayImage, maxCorners: 100, qualityLevel: 0.01, minDistance: 10);

24. 直方图反向投影

Cv2.CalcBackProject

  • 功能:计算反向投影,用于目标检测。
  • 用法
  • Mat backProject = new Mat();
  • Cv2.CalcBackProject(new Mat[] { image }, new int[] { 0 }, hist, backProject, new Rangef[] { new Rangef(0, 256) });

25. 颜色空间分离

Cv2.SeparateChannels

  • 功能:将多通道图像分离为单通道图像。
  • 用法
  • Mat[] channels = Cv2.SeparateChannels(image);

26. 直方图绘制

Cv2.DrawHist

  • 功能:绘制直方图。
  • 用法
  • // 需要自定义绘制函数
  • void DrawHist(Mat hist)
  • {
  • int histWidth = 512;
  • int histHeight = 400;
  • Mat histImage = new Mat(histHeight, histWidth, MatType.CV_8UC3, new Scalar(0, 0, 0));
  • int binWidth = (int)Math.Round((double)histWidth / hist.Rows);
  • for (int i = 1; i < hist.Rows; i++)
  • {
  • Cv2.Line(histImage, new Point(binWidth * (i - 1), histHeight - (int)hist.At<float>(i - 1)), new Point(binWidth * i, histHeight - (int)hist.At<float>(i)), new Scalar(255, 0, 0), 2);
  • }
  • Cv2.ImShow("Histogram", histImage);
  • }

27. 颜色直方图比较

Cv2.CompareHist

  • 功能:比较两个直方图。
  • 用法
  • double correlation = Cv2.CompareHist(hist1, hist2, HistCompMethods.Correl);

28. 目标检测与识别

CvDnn.ReadNetFromONNX

  • 功能:从 ONNX 模型文件加载网络。
  • 用法
  • var net = CvDnn.ReadNetFromONNX("model.onnx");

29. 轮廓填充

Cv2.FillPoly

  • 功能:填充多边形区域。
  • 用法
  • Cv2.FillPoly(image, new Point[][] { contour }, new Scalar(255, 0, 0));

30. 直方图均衡化

Cv2.EqualizeHist

  • 功能:对灰度图像进行直方图均衡化,增强对比度。
  • 用法
  • Mat equalizedImage = new Mat();
  • Cv2.EqualizeHist(grayImage, equalizedImage);

31. 颜色空间转换

Cv2.BGRToGray

  • 功能:将 BGR 图像转换为灰度图像。
  • 用法
  • Mat grayImage = new Mat();
  • Cv2.BGRToGray(image, grayImage);

Cv2.HsvToBgr

  • 功能:将 HSV 图像转换为 BGR 图像。
  • 用法
  • Mat bgrImage = new Mat();
  • Cv2.HsvToBgr(hsvImage, bgrImage);

32. 直方图均衡化

Cv2.CLAHE

  • 功能:对比度限制自适应直方图均衡化,增强图像对比度。
  • 用法
  • var clahe = Cv2.CreateCLAHE(clipLimit: 2.0, tileGridSize: new Size(8, 8));
  • Mat claheImage = new Mat();
  • clahe.Apply(grayImage, claheImage);

33. 目标检测与识别

CvDnn.NMSBoxes

  • 功能:非极大值抑制,用于去除重叠的边界框。
  • 用法
  • var indices = new List<int>();
  • CvDnn.NMSBoxes(boxes, confidences, scoreThreshold: 0.5f, nmsThreshold: 0.4f, indices);

34. 形态学操作

Cv2.MorphologyEx

  • 功能:执行形态学操作,如开运算、闭运算等。
  • 用法
  • Mat morphedImage = new Mat();
  • Cv2.MorphologyEx(binaryImage, morphedImage, MorphTypes.Open, null);

35. 目标跟踪

Cv2.TrackerCSRT

  • 功能:使用 CSRT 算法进行目标跟踪。
  • 用法
  • var tracker = TrackerCSRT.Create();
  • tracker.Init(frame, new Rect(100, 100, 50, 50)); // 初始化跟踪器
  • tracker.Update(frame, out Rect boundingBox); // 更新跟踪

36. 关键点描述

Cv2.SIFT

  • 功能:使用 SIFT 算法检测和描述关键点。
  • 用法
  • var sift = SIFT.Create(); KeyPoint[] keypoints; Mat descriptors = new Mat();
  • sift.DetectAndCompute(image, null, out keypoints, descriptors);

37. 目标检测与识别

CvDnn.ReadNetFromTorch

  • 功能:从 Torch 模型文件加载网络。
  • 用法
  • var net = CvDnn.ReadNetFromTorch("model.t7");

38. 轮廓绘制

Cv2.DrawContours

  • 功能:在图像上绘制轮廓。
  • 用法
  • Cv2.DrawContours(image, contours, -1, Scalar.Red, 2);

39. 直方图计算

Cv2.CalcBackProject

  • 功能:计算反向投影,用于目标检测。
  • 用法
  • Mat backProject = new Mat();
  • Cv2.CalcBackProject(new Mat[] { image }, new int[] { 0 }, hist, backProject, new Rangef[] { new Rangef(0, 256) });

40. 目标检测与识别

CvDnn.ReadNetFromTensorflow

  • 功能:从 TensorFlow 模型文件加载网络。
  • 用法
  • var net = CvDnn.ReadNetFromTensorflow("model.pb", "model.pbtxt");

41. 目标检测与识别

CvDnn.ReadNetFromCaffe

  • 功能:从 Caffe 模型文件加载网络。
  • 用法
  • var net = CvDnn.ReadNetFromCaffe("deploy.prototxt", "model.caffemodel");

42. 目标检测与识别

CvDnn.ReadNetFromONNX

  • 功能:从 ONNX 模型文件加载网络。
  • 用法
  • var net = CvDnn.ReadNetFromONNX("model.onnx");

43. 目标检测与识别

CvDnn.ReadNetFromDarknet

  • 功能:从 Darknet 配置文件和权重文件加载 YOLO 模型。
  • 用法
  • var net = CvDnn.ReadNetFromDarknet("yolov4.cfg", "yolov4.weights");

44. 目标检测与识别

CvDnn.BlobFromImage

  • 功能:将图像转换为网络输入格式的 blob。
  • 用法
  • var blob = CvDnn.BlobFromImage(image, 1 / 255.0, new Size(416, 416), new Scalar(0, 0, 0), true, false);

45. 目标检测与识别

CvDnn.Forward

  • 功能:执行前向推理。
  • 用法
  • var output = net.Forward();

46. 目标检测与识别

CvDnn.NMSBoxes

  • 功能:非极大值抑制,用于去除重叠的边界框。
  • 用法
  • var indices = new List<int>();
  • CvDnn.NMSBoxes(boxes, confidences, scoreThreshold: 0.5f, nmsThreshold: 0.4f, indices);

47. 目标检测与识别

CvDnn.ReadNetFromTorch

  • 功能:从 Torch 模型文件加载网络。
  • 用法
  • var net = CvDnn.ReadNetFromTorch("model.t7");

48. 目标检测与识别

CvDnn.ReadNetFromTensorflow

  • 功能:从 TensorFlow 模型文件加载网络。
  • 用法
  • var net = CvDnn.ReadNetFromTensorflow("model.pb", "model.pbtxt");

49. 目标检测与识别

CvDnn.ReadNetFromCaffe

  • 功能:从 Caffe 模型文件加载网络。
  • 用法
  • var net = CvDnn.ReadNetFromCaffe("deploy.prototxt", "model.caffemodel");

50. 目标检测与识别

CvDnn.ReadNetFromONNX

  • 功能:从 ONNX 模型文件加载网络。
  • 用法
  • var net = CvDnn.ReadNetFromONNX("model.onnx");

51. 颜色空间转换

Cv2.RGBToGray

  • 功能:将 RGB 图像转换为灰度图像。
  • 用法
  • Mat grayImage = new Mat();
  • Cv2.CvtColor(image, grayImage, ColorConversion.RgbToGray);

Cv2.BGRToHSV

  • 功能:将 BGR 图像转换为 HSV 图像。
  • 用法
  • Mat hsvImage = new Mat();
  • Cv2.CvtColor(image, hsvImage, ColorConversion.BgrToHsv);

52. 直方图计算与比较

Cv2.CalcHist

  • 功能:计算图像的直方图。
  • 用法
  • int[] histSize = { 256 }; // 256 个
  • bins float[] ranges = { 0, 256 }; // 像素值范围
  • Mat hist = new Mat();
  • Cv2.CalcHist(new Mat[] { grayImage }, new int[] { 0 }, null, hist, 1, histSize, new Rangef[] { new Rangef(0, 256) });

Cv2.CompareHist

  • 功能:比较两个直方图。
  • 用法
  • double correlation = Cv2.CompareHist(hist1, hist2, HistCompMethods.Correl);

53. 形态学操作

Cv2.Erode

  • 功能:腐蚀操作,减少图像中的白色区域。
  • 用法
  • Mat erodedImage = new Mat();
  • Cv2.Erode(binaryImage, erodedImage, null, new Point(-1, -1), 1);

Cv2.Dilate

  • 功能:膨胀操作,增加图像中的白色区域。
  • 用法
  • Mat dilatedImage = new Mat();
  • Cv2.Dilate(binaryImage, dilatedImage, null, new Point(-1, -1), 1);

54. 轮廓分析

Cv2.FindContours

  • 功能:查找图像中的轮廓。
  • 用法
  • Cv2.FindContours(binaryImage, out Point[][] contours, out HierarchyIndex[] hierarchy, RetrievalModes.Tree, ContourApproximation.Simple);

55. 目标检测与识别

CvDnn.ReadNetFromDarknet

  • 功能:从 Darknet 配置文件和权重文件加载 YOLO 模型。
  • 用法
  • var net = CvDnn.ReadNetFromDarknet("yolov4.cfg", "yolov4.weights");

56. 目标检测与识别

CvDnn.ReadNetFromTensorflow

  • 功能:从 TensorFlow 模型文件加载网络。
  • 用法
  • var net = CvDnn.ReadNetFromTensorflow("model.pb", "model.pbtxt");

57. 目标检测与识别

CvDnn.ReadNetFromCaffe

  • 功能:从 Caffe 模型文件加载网络。
  • 用法
  • var net = CvDnn.ReadNetFromCaffe("deploy.prototxt", "model.caffemodel");

58. 目标检测与识别

CvDnn.ReadNetFromONNX

  • 功能:从 ONNX 模型文件加载网络。
  • 用法
  • var net = CvDnn.ReadNetFromONNX("model.onnx");

59. 目标检测与识别

CvDnn.NMSBoxes

  • 功能:非极大值抑制,用于去除重叠的边界框。
  • 用法
  • var indices = new List<int>();
  • CvDnn.NMSBoxes(boxes, confidences, scoreThreshold: 0.5f, nmsThreshold: 0.4f, indices);

60. 目标跟踪

Cv2.TrackerKCF

  • 功能:使用 KCF 算法进行目标跟踪。
  • 用法
  • var tracker = TrackerKCF.Create();
  • tracker.Init(frame, new Rect(100, 100, 50, 50)); // 初始化跟踪器
  • tracker.Update(frame, out Rect boundingBox); // 更新跟踪

61. 目标跟踪

Cv2.TrackerCSRT

  • 功能:使用 CSRT 算法进行目标跟踪。
  • 用法
  • var tracker = TrackerCSRT.Create();
  • tracker.Init(frame, new Rect(100, 100, 50, 50)); // 初始化跟踪器
  • tracker.Update(frame, out Rect boundingBox); // 更新跟踪

62. 关键点检测与描述

Cv2.SIFT

  • 功能:使用 SIFT 算法检测和描述关键点。
  • 用法
  • var sift = SIFT.Create(); KeyPoint[] keypoints;
  • Mat descriptors = new Mat();
  • sift.DetectAndCompute(image, null, out keypoints, descriptors);

Cv2.ORB

  • 功能:使用 ORB 算法检测和描述关键点。
  • 用法
  • var orb = ORB.Create(); KeyPoint[] keypoints;
  • Mat descriptors = new Mat();
  • orb.DetectAndCompute(image, null, out keypoints, descriptors);

63. 直方图均衡化

Cv2.EqualizeHist

  • 功能:对灰度图像进行直方图均衡化,增强对比度。
  • 用法
  • Mat equalizedImage = new Mat();
  • Cv2.EqualizeHist(grayImage, equalizedImage);

64. 目标检测与识别

CvDnn.ReadNetFromTorch

  • 功能:从 Torch 模型文件加载网络。
  • 用法
  • var net = CvDnn.ReadNetFromTorch("model.t7");

65. 轮廓绘制

Cv2.DrawContours

  • 功能:在图像上绘制轮廓。
  • 用法
  • Cv2.DrawContours(image, contours, -1, Scalar.Red, 2);

66. 目标检测与识别

CvDnn.ReadNetFromTensorflow

  • 功能:从 TensorFlow 模型文件加载网络。
  • 用法
  • var net = CvDnn.ReadNetFromTensorflow("model.pb", "model.pbtxt");

67. 目标检测与识别

CvDnn.ReadNetFromCaffe

  • 功能:从 Caffe 模型文件加载网络。
  • 用法
  • var net = CvDnn.ReadNetFromCaffe("deploy.prototxt", "model.caffemodel");

68. 目标检测与识别

CvDnn.ReadNetFromONNX

  • 功能:从 ONNX 模型文件加载网络。
  • 用法
  • var net = CvDnn.ReadNetFromONNX("model.onnx");

69. 目标检测与识别

CvDnn.NMSBoxes

  • 功能:非极大值抑制,用于去除重叠的边界框。
  • 用法
  • var indices = new List<int>();
  • CvDnn.NMSBoxes(boxes, confidences, scoreThreshold: 0.5f, nmsThreshold: 0.4f, indices);

70. 目标跟踪

Cv2.TrackerKCF

  • 功能:使用 KCF 算法进行目标跟踪。
  • 用法
  • var tracker = TrackerKCF.Create();
  • tracker.Init(frame, new Rect(100, 100, 50, 50)); // 初始化跟踪器
  • tracker.Update(frame, out Rect boundingBox); // 更新跟踪

71. 目标跟踪

Cv2.TrackerCSRT

  • 功能:使用 CSRT 算法进行目标跟踪。
  • 用法
  • var tracker = TrackerCSRT.Create();
  • tracker.Init(frame, new Rect(100, 100, 50, 50)); // 初始化跟踪器
  • tracker.Update(frame, out Rect boundingBox); // 更新跟踪

72. 关键点检测与描述

Cv2.SIFT

  • 功能:使用 SIFT 算法检测和描述关键点。
  • 用法
  • var sift = SIFT.Create(); KeyPoint[] keypoints;
  • Mat descriptors = new Mat();
  • sift.DetectAndCompute(image, null, out keypoints, descriptors);

Cv2.ORB

  • 功能:使用 ORB 算法检测和描述关键点。
  • 用法
  • var orb = ORB.Create(); KeyPoint[] keypoints;
  • Mat descriptors = new Mat();
  • orb.DetectAndCompute(image, null, out keypoints, descriptors);

73. 直方图均衡化

Cv2.EqualizeHist

  • 功能:对灰度图像进行直方图均衡化,增强对比度。
  • 用法
  • Mat equalizedImage = new Mat();
  • Cv2.EqualizeHist(grayImage, equalizedImage);

74. 目标检测与识别

CvDnn.ReadNetFromTorch

  • 功能:从 Torch 模型文件加载网络。
  • 用法
  • var net = CvDnn.ReadNetFromTorch("model.t7");

75. 轮廓绘制

Cv2.DrawContours

  • 功能:在图像上绘制轮廓。
  • 用法
  • Cv2.DrawContours(image, contours, -1, Scalar.Red, 2);

76. 图像金字塔

Cv2.PyrDown

  • 功能:将图像缩小为原始图像的一半,使用高斯模糊。
  • 用法
  • Mat downsampledImage = new Mat();
  • Cv2.PyrDown(image, downsampledImage);

Cv2.PyrUp

  • 功能:将图像放大为原始图像的两倍,使用高斯模糊。
  • 用法
  • Mat upsampledImage = new Mat();
  • Cv2.PyrUp(image, upsampledImage);

77. 透视变换

Cv2.GetAffineTransform

  • 功能:获取仿射变换矩阵。
  • 用法
  • Point2f[] srcPoints = { new Point2f(0, 0), new Point2f(1, 0), new Point2f(0, 1) };
  • Point2f[] dstPoints = { new Point2f(0, 0), new Point2f(1, 0), new Point2f(0, 1) };
  • Mat affineMatrix = Cv2.GetAffineTransform(srcPoints, dstPoints);

78. 直方图反向投影

Cv2.CalcBackProject

  • 功能:计算反向投影,用于目标检测。
  • 用法
  • Mat backProject = new Mat();
  • Cv2.CalcBackProject(new Mat[] { image }, new int[] { 0 }, hist, backProject, new Rangef[] { new Rangef(0, 256) });

79. 轮廓特征提取

Cv2.Moments

  • 功能:计算轮廓的矩,用于特征提取。
  • 用法
  • var moments = Cv2.Moments(contour);
  • double area = moments.M00; // 轮廓面积

80. 轮廓逼近

Cv2.ApproxPolyDP

  • 功能:对轮廓进行多边形逼近。
  • 用法
  • Point[] approx = Cv2.ApproxPolyDP(contour, 0.02 * Cv2.ArcLength(contour, true), true);

81. 形态学操作

Cv2.MorphologyEx

  • 功能:执行形态学操作,如开运算、闭运算等。
  • 用法
  • Mat morphedImage = new Mat();
  • Cv2.MorphologyEx(binaryImage, morphedImage, MorphTypes.Open, null);

82. 颜色空间转换

Cv2.CvtColor

  • 功能:转换图像颜色空间(如 BGR 转 HSV、RGB 转 LAB 等)。
  • 用法
  • Mat hsvImage = new Mat();
  • Cv2.CvtColor(image, hsvImage, ColorConversion.BgrToHsv);

83. 目标检测与识别

CvDnn.ReadNetFromDarknet

  • 功能:从 Darknet 配置文件和权重文件加载 YOLO 模型。
  • 用法
  • var net = CvDnn.ReadNetFromDarknet("yolov4.cfg", "yolov4.weights");

84. 目标检测与识别

CvDnn.ReadNetFromTensorflow

  • 功能:从 TensorFlow 模型文件加载网络。
  • 用法
  • var net = CvDnn.ReadNetFromTensorflow("model.pb", "model.pbtxt");

85. 目标检测与识别

CvDnn.ReadNetFromCaffe

  • 功能:从 Caffe 模型文件加载网络。
  • 用法
  • csharp
  • var net = CvDnn.ReadNetFromCaffe("deploy.prototxt", "model.caffemodel");

86. 目标检测与识别

CvDnn.ReadNetFromONNX

  • 功能:从 ONNX 模型文件加载网络。
  • 用法
  • var net = CvDnn.ReadNetFromONNX("model.onnx");

87. 目标检测与识别

CvDnn.NMSBoxes

  • 功能:非极大值抑制,用于去除重叠的边界框。
  • 用法
  • var indices = new List<int>();
  • CvDnn.NMSBoxes(boxes, confidences, scoreThreshold: 0.5f, nmsThreshold: 0.4f, indices);

88. 目标跟踪

Cv2.TrackerKCF

  • 功能:使用 KCF 算法进行目标跟踪。
  • 用法
  • var tracker = TrackerKCF.Create();
  • tracker.Init(frame, new Rect(100, 100, 50, 50)); // 初始化跟踪器
  • tracker.Update(frame, out Rect boundingBox); // 更新跟踪

89. 目标跟踪

Cv2.TrackerCSRT

  • 功能:使用 CSRT 算法进行目标跟踪。
  • 用法
  • var tracker = TrackerCSRT.Create();
  • tracker.Init(frame, new Rect(100, 100, 50, 50)); // 初始化跟踪器
  • tracker.Update(frame, out Rect boundingBox); // 更新跟踪

90. 关键点检测与描述

Cv2.SIFT

  • 功能:使用 SIFT 算法检测和描述关键点。
  • 用法
  • var sift = SIFT.Create(); KeyPoint[] keypoints;
  • Mat descriptors = new Mat();
  • sift.DetectAndCompute(image, null, out keypoints, descriptors);

Cv2.ORB

  • 功能:使用 ORB 算法检测和描述关键点。
  • 用法
  • var orb = ORB.Create(); KeyPoint[] keypoints;
  • Mat descriptors = new Mat();
  • orb.DetectAndCompute(image, null, out keypoints, descriptors);

91. 直方图均衡化

Cv2.EqualizeHist

  • 功能:对灰度图像进行直方图均衡化,增强对比度。
  • 用法
  • Mat equalizedImage = new Mat();
  • Cv2.EqualizeHist(grayImage, equalizedImage);

92. 轮廓绘制

Cv2.DrawContours

  • 功能:在图像上绘制轮廓。
  • 用法
  • Cv2.DrawContours(image, contours, -1, Scalar.Red, 2);

93. 目标检测与识别

CvDnn.ReadNetFromTorch

  • 功能:从 Torch 模型文件加载网络。
  • 用法
  • var net = CvDnn.ReadNetFromTorch("model.t7");

94. 目标检测与识别

CvDnn.ReadNetFromTensorflow

  • 功能:从 TensorFlow 模型文件加载网络。
  • 用法
  • var net = CvDnn.ReadNetFromTensorflow("model.pb", "model.pbtxt");

95. 目标检测与识别

CvDnn.ReadNetFromCaffe

  • 功能:从 Caffe 模型文件加载网络。
  • 用法
  • var net = CvDnn.ReadNetFromCaffe("deploy.prototxt", "model.caffemodel");

96. 目标检测与识别

CvDnn.ReadNetFromONNX

  • 功能:从 ONNX 模型文件加载网络。
  • 用法
  • var net = CvDnn.ReadNetFromONNX("model.onnx");

97. 目标检测与识别

CvDnn.NMSBoxes

  • 功能:非极大值抑制,用于去除重叠的边界框。
  • 用法
  • var indices = new List<int>();
  • CvDnn.NMSBoxes(boxes, confidences, scoreThreshold: 0.5f, nmsThreshold: 0.4f, indices);

98. 目标跟踪

Cv2.TrackerKCF

  • 功能:使用 KCF 算法进行目标跟踪。
  • 用法
  • var tracker = TrackerKCF.Create();
  • tracker.Init(frame, new Rect(100, 100, 50, 50)); // 初始化跟踪器
  • tracker.Update(frame, out Rect boundingBox); // 更新跟踪

99. 目标跟踪

Cv2.TrackerCSRT

  • 功能:使用 CSRT 算法进行目标跟踪。
  • 用法
  • var tracker = TrackerCSRT.Create();
  • tracker.Init(frame, new Rect(100, 100, 50, 50)); // 初始化跟踪器
  • tracker.Update(frame, out Rect boundingBox); // 更新跟踪

100. 关键点检测与描述

Cv2.SIFT

  • 功能:使用 SIFT 算法检测和描述关键点。
  • 用法
  • var sift = SIFT.Create(); KeyPoint[] keypoints;
  • Mat descriptors = new Mat();
  • sift.DetectAndCompute(image, null, out keypoints, descriptors);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2274562.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【初阶数据结构】线性表之单链表

文章目录 前言 一、单链表的概念与结构 1.概念 2.结点 3.性质 二、实现单链表 1.结构的定义 2.链表的打印和结点的申请 3.单链表的尾插和头插 4.单链表的尾删和头删 5.单链表的查找 6.指定位置之前插入数据和指定位置之后插入数据 7.删除pos结点和删除pos之后的结…

DB-Engines Ranking 2025年1月数据库排行

DB-Engines Ranking 2025年1月数据库排行 DB-Engines排名根据数据库管理系统的受欢迎程度进行排名。排名每月更新一次。 2025年1月&#xff0c;共有423个数据库进入排行。 排行榜 Oracle Oracle 连续三月稳居榜首&#xff0c;排名稳定。2025 年 1 月分数较上月增 5.03&#x…

Hadoop3.x 万字解析,从入门到剖析源码

&#x1f496; 欢迎来到我的博客&#xff01; 非常高兴能在这里与您相遇。在这里&#xff0c;您不仅能获得有趣的技术分享&#xff0c;还能感受到轻松愉快的氛围。无论您是编程新手&#xff0c;还是资深开发者&#xff0c;都能在这里找到属于您的知识宝藏&#xff0c;学习和成长…

鸿蒙的APP真机调试以及发布

目录&#xff1a; 1、创建好鸿蒙项目2、创建AGC项目3、实现自动签名3.1、手动方式创建签名文件和密码 4、运行项目5、无线真机调试 1、创建好鸿蒙项目 2、创建AGC项目 &#xff08;1&#xff09;在File->Project Structure->Project->Signing Configs中进行登录。(未…

Swin Transformer模型详解(附pytorch实现)

写在前面 Swin Transformer&#xff08;Shifted Window Transformer&#xff09;是一种新颖的视觉Transformer模型&#xff0c;在2021年由微软亚洲研究院提出。这一模型提出了一种基于局部窗口的自注意力机制&#xff0c;显著改善了Vision Transformer&#xff08;ViT&#xf…

穷举vs暴搜vs深搜vs回溯vs剪枝系列一>字母大小写全排列

题目&#xff1a; 解析&#xff1a; 代码&#xff1a; private List<String> ret;private StringBuffer path;public List<String> letterCasePermutation(String s) {ret new ArrayList<>();path new StringBuffer();dfs(s,0);return ret;}private voi…

LabVIEW软件侵权分析与应对

问&#xff1a;如果涉及到LabVIEW软件的仿制或模仿&#xff0c;特别是在功能、界面等方面&#xff0c;如何判断是否构成侵权&#xff1f;该如何应对&#xff1f; 答&#xff1a;LabVIEW软件的侵权问题&#xff0c;尤其是在涉及到仿制或模仿其功能、界面、设计等方面&#xff0…

玩转 JMeter:Random Order Controller让测试“乱”出花样

嘿&#xff0c;各位性能测试的小伙伴们&#xff01;今天咱要来唠唠 JMeter 里超级有趣又超实用的 Random Order Controller&#xff08;随机顺序控制器&#xff09;&#xff0c;它就像是性能测试这场大戏里的“魔术棒”&#xff0c;轻轻一挥&#xff0c;就能让测试场景变得千变…

探秘MetaGPT:革新软件开发的多智能体框架(22/30)

一、MetaGPT 引发的 AI 变革浪潮 近年来&#xff0c;人工智能大模型领域取得了令人瞩目的进展&#xff0c;GPT-3、GPT-4、PaLM 等模型展现出了惊人的自然语言处理能力&#xff0c;仿佛为 AI 世界打开了一扇通往无限可能的大门。它们能够生成流畅的文本、回答复杂的问题、进行创…

01、Redis初认识

一、简介 Redis&#xff0c;Remote Dictionary Server &#xff0c;远程字典服务。它是由一个意大利人使用C语言开发的&#xff0c;支持网络、可基于内存也可以持久化的日志型、NoSQL内存数据库&#xff0c;其提供了多种语言的API。 为什么把Reids称为字典服务&#xff1f; …

【2025 Rust学习 --- 10 运算符重载】

重载操作符 算术运算符与按位运算符 Rust 中&#xff0c;表达式 a b 实际上是 a.add(b) 的简写形式&#xff0c;也就是对标准库 中 std::ops::Add 特型的 add 方法的调用。Rust 的标准数值类型都实现了 std::ops::Add。 trait Add<Rhs Self> {type Output;fn add(se…

node-sass@4.14.1报错的最终解决方案分享

输入npm i全安装文件所需的依赖的时候&#xff0c;博主是使用sass去书写的&#xff0c;使用的是node-sass4.14.1和sass-loader7.3.1的版本的&#xff0c;安装的时候老是出现错误&#xff0c; node-sass4.14.1版本不再被支持的原因 node-sass 是一个基于 LibSass 的 Node.js 绑…

LabVIEW大数据有什么应用场景?

LabVIEW在处理大数据时主要依赖于其强大的数据采集、信号处理、控制、以及实时系统的功能。以下是一些典型的应用场景&#xff1a; ​ 1. 工业自动化与制造 数据采集与监控&#xff1a;在生产线上&#xff0c;LabVIEW可以用来收集大量的传感器数据&#xff08;如温度、压力、湿…

深入理解Mybatis原理》MyBatis的sqlSessi

sqlSessionFactory 与 SqlSession 正如其名&#xff0c;Sqlsession对应着一次数据库会话。由于数据库会话不是永久的&#xff0c;因此Sqlsession的生命周期也不应该是永久的&#xff0c;相反&#xff0c;在你每次访问数据库时都需要创建它&#xff08;当然并不是说在Sqlsession…

【OAuth2系列】如何使用OAuth 2.0实现安全授权?详解四种授权方式

作者&#xff1a;后端小肥肠 &#x1f347; 我写过的文章中的相关代码放到了gitee&#xff0c;地址&#xff1a;xfc-fdw-cloud: 公共解决方案 &#x1f34a; 有疑问可私信或评论区联系我。 &#x1f951; 创作不易未经允许严禁转载。 姊妹篇&#xff1a; 【OAuth2系列】集成微…

Open WebUI 与 AnythingLLM 安装部署

在前文 Ollama私有化部署大语言模型LLM&#xff08;上&#xff09;-CSDN博客 中通过Ollama来搭建运行私有化大语言模型&#xff0c;但缺少用户交互的界面&#xff0c;特别是Web可视化界面。 对此&#xff0c;本文以Open WebUI和AnythingLLM为例分别作为Ollama的前端Web可视化界…

如何稳定使用 O1 / O1 Pro,让“降智”现象不再困扰?

近期&#xff0c;不少朋友在使用 O1 或 O1 Pro 模型时&#xff0c;都会碰到“降智”或“忽高忽低”的智力波动&#xff0c;比如无法识图、无法生成图片、甚至回答准确度也不稳定。面对这些问题&#xff0c;你是不是也感到头疼呢&#xff1f; 为了找到更可靠的解决办法&#xf…

RK3562编译Android13 ROOT固件教程,触觉智能开发板演示

本文介绍编译Android13 ROOT权限固件的方法&#xff0c;触觉智能RK3562开发板演示&#xff0c;搭载4核A53处理器&#xff0c;主频高达2.0GHz&#xff1b;内置独立1Tops算力NPU&#xff0c;可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。 关闭seli…

58. Three.js案例-创建一个带有红蓝配置的半球光源的场景

58. Three.js案例-创建一个带有红蓝配置的半球光源的场景 实现效果 本案例展示了如何使用Three.js创建一个带有红蓝配置的半球光源的场景&#xff0c;并在其中添加一个旋转的球体。通过设置不同的光照参数&#xff0c;可以观察到球体表面材质的变化。 知识点 WebGLRenderer …

React+redux项目搭建流程

1.创建项目 create-react-app my-project --template typescript // 创建项目并使用typescript2.去除掉没用的文件夹&#xff0c;只保留部分有用的文件 3.项目配置&#xff1a; 配置项目的icon 配置项目的标题 配置项目的别名等&#xff08;craco.config.ts&…