Emgucv4.7版本 提取轮廓 并把轮廓转换成点集的代码
时间: 2024-02-21 08:59:28 浏览: 104
以下是使用Emgu CV 4.7版本提取轮廓并将其转换为点集的示例代码:
```csharp
using Emgu.CV;
using Emgu.CV.Structure;
using System.Collections.Generic;
// 假设您已经加载了一张图像,并且将其存储在名为"image"的Mat对象中
// 定义一个存储轮廓的变量
List<Point[]> contours = new List<Point[]>();
// 首先将图像转换为灰度图像
Mat grayImage = new Mat();
CvInvoke.CvtColor(image, grayImage, Emgu.CV.CvEnum.ColorConversion.Bgr2Gray);
// 对图像进行二值化处理
Mat binaryImage = new Mat();
CvInvoke.Threshold(grayImage, binaryImage, 100, 255, Emgu.CV.CvEnum.ThresholdType.Binary);
// 提取轮廓
Mat hierarchy = new Mat();
CvInvoke.FindContours(binaryImage, contours, hierarchy, Emgu.CV.CvEnum.RetrType.List, Emgu.CV.CvEnum.ChainApproxMethod.ChainApproxSimple);
// 将每个轮廓转换为点集
List<List<Point>> pointSets = new List<List<Point>>();
foreach (Point[] contour in contours)
{
List<Point> pointSet = new List<Point>(contour);
pointSets.Add(pointSet);
}
```
这段代码将加载一张图像,将其转换为灰度图像并进行二值化处理,然后使用`FindContours`函数提取轮廓。最后,将每个轮廓转换为一个点集,并将它们存储在`pointSets`变量中。请注意,这只是一个示例代码,您需要根据您的具体需求进行修改。
阅读全文