C# OPENCV 二值化后获取图片线条
时间: 2023-11-30 19:43:04 浏览: 107
以下是C# OpenCV二值化后获取图片线条的示例代码:
```csharp
using System;
using System.Drawing;using OpenCvSharp;
class Program
{
static void Main(string[] args)
{
// 读取图片
Mat src = Cv2.ImRead("test.jpg");
// 灰度化
Mat gray = new Mat();
Cv2.CvtColor(src, gray, ColorConversionCodes.BGR2GRAY);
// 二值化
Mat binary = new Mat();
Cv2.Threshold(gray, binary, 0, 255, ThresholdTypes.Binary | ThresholdTypes.Otsu);
// 获取轮廓
Point[][] contours;
HierarchyIndex[] hierarchy;
Cv2.FindContours(binary, out contours, out hierarchy, RetrievalModes.External, ContourApproximationModes.ApproxSimple);
// 绘制轮廓
Mat result = new Mat(src.Size(), MatType.CV_8UC3, Scalar.All(0));
for (int i = 0; i < contours.Length; i++)
{
Cv2.DrawContours(result, contours, i, Scalar.RandomColor(), 2, LineTypes.AntiAlias, hierarchy);
}
// 显示结果
Cv2.ImShow("result", result);
Cv2.WaitKey(0);
Cv2.DestroyAllWindows();
}
}
```
代码解释:
1. 首先读取图片,使用`Cv2.ImRead`方法。
2. 将图片转换为灰度图像,使用`Cv2.CvtColor`方法。
3. 对灰度图像进行二值化处理,使用`Cv2.Threshold`方法。
4. 获取二值化图像的轮廓,使用`Cv2.FindContours`方法。
5. 绘制轮廓,使用`Cv2.DrawContours`方法。
6. 显示结果,使用`Cv2.ImShow`方法。
阅读全文