Emgucv 提取轮廓的代码
时间: 2023-07-30 20:06:35 浏览: 78
好的,这是一个使用 EmguCV 提取轮廓的 C# 代码示例:
```csharp
using System;
using System.Collections.Generic;
using System.Drawing;
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
namespace EmguCVContourDetection
{
class Program
{
static void Main(string[] args)
{
// 加载图像
Image<Bgr, byte> image = new Image<Bgr, byte>("image.jpg");
// 将图像转换为灰度图像
Image<Gray, byte> grayImage = image.Convert<Gray, byte>();
// 二值化处理
grayImage = grayImage.ThresholdBinary(new Gray(100), new Gray(255));
// 查找轮廓
List<Contour<Point>> contours = new List<Contour<Point>>();
Mat hierarchy = new Mat();
CvInvoke.FindContours(grayImage, contours, hierarchy, RetrType.Tree, ChainApproxMethod.ChainApproxSimple);
// 显示结果
using (var window = new Emgu.CV.UI.ImageViewer("Contours"))
{
window.Image = image;
CvInvoke.DrawContours(window.Image, contours, -1, new MCvScalar(0, 255, 0), 2);
window.ShowDialog();
}
}
}
}
```
这段代码首先加载了一个图像,然后将其转换为灰度图像,并进行了二值化处理。接着使用 `FindContours` 函数查找轮廓,并将结果存储在一个 `List<Contour<Point>>` 类型的变量中。最后,使用 `DrawContours` 函数在图像上绘制出找到的轮廓。
阅读全文