当前位置: 首页 > news >正文

C#版OpenCv常用函数大全

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);

相关文章:

C#版OpenCv常用函数大全

OpenCvSharp 是 OpenCV 的NET封装&#xff0c;提供了丰富的图像处理和计算机视觉功能。以下是一些常用函数及其详细说明。 1. 图像读取与显示 Cv2.ImRead 功能&#xff1a;读取图像文件并返回一个 Mat 对象。用法&#xff1a;Mat image Cv2.ImRead("path/to/image.jpg&…...

Spring Boot教程之五十二:CrudRepository 和 JpaRepository 之间的区别

Spring Boot – CrudRepository 和 JpaRepository 之间的区别 Spring Boot建立在 Spring 之上&#xff0c;包含 Spring 的所有功能。由于其快速的生产就绪环境&#xff0c;使开发人员能够直接专注于逻辑&#xff0c;而不必费力配置和设置&#xff0c;因此如今它正成为开发人员…...

蓝桥杯备考:数据结构之栈 和 stack

栈的概念以及栈的实现 栈是一种只允许在一端进行插入和删除的线性表 空栈&#xff1a;没有任何元素 入栈&#xff1a;插入元素 出栈&#xff1a;删除元素 栈本身就是一个线性表&#xff0c;我们可以写一个足够大的数组来实现栈 除此之外&#xff0c;我们还需要变量n来记录…...

solidity基础 -- 映射

在区块链的智能合约开发领域&#xff0c;Solidity 作为以太坊上最主流的编程语言之一&#xff0c;拥有诸多强大特性助力开发者构建复杂且高效的去中心化应用。其中&#xff0c;映射&#xff08;Mapping&#xff09;是一个极为关键的数据结构&#xff0c;它为合约中的数据存储与…...

Angular 11课程实践:构建高效单页应用的支持代码

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;Angular 11是Google支持的前端框架&#xff0c;适合构建复杂的单页应用&#xff08;SPA&#xff09;。本课程将深入介绍Angular核心特性&#xff0c;如组件化、依赖注入、数据绑定和路由&#xff0c;并且涵盖Ang…...

测试用例颗粒度说明

当我们在编写测试用例时&#xff0c;总是会遇到一个问题&#xff1a;如何确定测试用例的颗粒度&#xff1f;测试用例过于粗糙&#xff0c;可能无法全面覆盖系统的细节&#xff1b;而颗粒度过细&#xff0c;又会导致测试重复、冗余。掌握合适的颗粒度&#xff0c;不仅可以提高测…...

ESP32 IDF VScode出现头文件“无法打开 源 文件 ”,并有红色下划线警告

问题背景&#xff1a; ESP32 IDF VScode出现头文件“无法打开 源 文件 ”&#xff0c;并有红色下划线警告&#xff1a; 解决办法&#xff1a; 在工程里面的.vscode文件夹下&#xff0c;检查是否存在c_cpp_properties.json文件&#xff0c;如果没有可以手动创建添加。如图…...

Windows安装ES单机版设置密码

下载ES ES下载链接 我用的是7.17.26 启动前配置 解压之后打开D:\software\elasticsearch-7.17.26\bin\elasticsearch-env.bat 在elasticsearch-env.bat文件中修改jdk的路径 修改前 修改内容 if defined ES_JAVA_HOME (set JAVA"D:\software\elasticsearch-7.17.26\…...

Linux Docker

Docker 的定义 Docker 是一个开源的容器化平台&#xff0c;它允许开发者将应用程序及其依赖项打包成一个可移植的容器。容器是一种轻量级、独立的运行环境&#xff0c;与传统的虚拟机不同&#xff0c;容器共享主机操作系统的内核&#xff0c;通过隔离的文件系统、进程空间和网…...

MSE学习

MSE简介 媒体源拓展&#xff08;Media Source Extensions&#xff0c;简称 MSE&#xff09;是一个由 W3C 制定的标准&#xff0c;它允许 JavaScript 代码通过 AJAX 请求获取媒体数据&#xff0c;并将其提供给 HTML 的 <video> 或 <audio> 元素进行播放。 MSE特点…...

0-基于蚁群优化和带注意力机制的循环神经网络的新型混合算法用于解决旅行商问题(HAL science)(完)

文章目录 AbstractI INTRODUCTIONII 旅行商问题的正式描述III STATE OF THE ARTIV 使用的混合化技术原理4.1 Principle of ACO4.2具有注意机制的自动编码器模型V 蚁群优化与具有注意机制的神经网络的混合5.1 基本思想5.2 解决步骤5.2.1 模型训练5.2.2 寻找解VI EXPERIMENTS6.1 …...

MIUI显示/隐藏5G开关的方法,信号弱时开启手机Wifi通话方法

5G网速虽快&#xff0c;手机功耗也大。 1.取消MIUI强制的5G&#xff0c;手动设置4G的方法&#xff01; 【小米澎湃OS, Xiaomi HyperOS显示/隐藏5G开关的方法】 1.1.小米MIUI系统升级后&#xff0c;被强制连5G&#xff0c;手动设置开关被隐藏&#xff0c;如下图&#xff1a; 1…...

挑战20天刷完leecode100

2025.1.5 二分查找 1 搜索插入位置 就是简单的二分查找 注意开闭就行 这里有一句话就是nums是升序的 如果他不是严格递增 就是有相同的数字的情况下应该怎么写? int lower_bound(vector<int>& nums, int target) {int left 0, right (int) nums.size() - 1; …...

Java列表示例

示例1&#xff1a;使用ArrayList创建并操作列表 ArrayList是List接口最常用的实现之一&#xff0c;它内部使用数组来存储元素&#xff0c;因此对于随机访问具有很高的效率。但是&#xff0c;当涉及到频繁的插入或删除操作时&#xff0c;它的性能可能会受到影响&#xff0c;因为…...

Objective-C语言的网络编程

Objective-C语言的网络编程 引言 在现代软件开发中&#xff0c;网络编程逐渐成为一个不可或缺的部分&#xff0c;特别是在移动应用和分布式系统中。Objective-C 是一种主要用于 iOS 和 macOS 开发的编程语言&#xff0c;它在网络编程方面也有着丰富的支持。在这篇文章中&…...

安卓OCR使用(Google ML Kit)

OCR是一个很常用的功能&#xff0c;Google ML Kit提供了OCR能力&#xff0c;用起来也很简单&#xff0c;本文介绍一下使用方法。 1. 相关概念 名词概念解释TextBlock块一个段落Line行一行文本Element元素单词&#xff1b;对汉字来说&#xff0c;类似"开头 (分隔符)中间&…...

《机器学习》——贝叶斯算法

贝叶斯简介 贝叶斯公式&#xff0c;又称贝叶斯定理、贝叶斯法则&#xff0c;最初是用来描述两个事件的条件概率间的关系的公式&#xff0c;后来被人们发现具有很深刻的实际意义和应用价值。该公式的实际内涵是&#xff0c;支持某项属性的事件发生得愈多&#xff0c;则该属性成…...

【博主推荐】 Microi吾码开源低代码平台,快速建站,提高开发效率

&#x1f36c;引言 &#x1f36c;什么是低代码平台&#xff1f; 低代码平台&#xff08;Low-Code Platform&#xff09;是一种使开发人员和业务用户可以通过图形化界面和少量的编程来创建应用程序的开发工具。与传统的编程方式相比&#xff0c;低代码平台大大简化了开发过程&a…...

网站自动签到

我研究生生涯面临两个问题&#xff0c;一是写毕业论文&#xff0c;二是找工作&#xff0c;这两者又有很大的冲突。怎么解决这两个冲突呢&#xff1f;把python学好是一个路子&#xff0c;因此从今天我要开一个专栏就是学python 其实我的本意不是网站签到&#xff0c;我喜欢在起点…...

C 语言奇幻之旅 - 第16篇:C 语言项目实战

目录 引言1. 项目规划1.1 需求分析与设计1.1.1 项目目标1.1.2 功能需求1.1.3 技术实现方案 2. 代码实现2.1 模块化编程2.1.1 学生信息模块2.1.2 成绩管理模块 2.2 调试与测试2.2.1 调试2.2.2 测试2.2.4 测试结果 3. 项目总结3.1 代码优化与重构3.1.1 代码优化3.1.2 代码重构 3.…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...