opencvsharp的FindContours方法讲解
时间: 2023-07-29 14:06:05 浏览: 102
Python通过OpenCV的findContours获取轮廓并切割实例
5星 · 资源好评率100%
OpenCvSharp是基于OpenCV库的C#封装,提供了一系列图像处理和计算机视觉算法的实现。FindContours是其中一个用于轮廓检测的方法。
该方法的基本语法如下:
```csharp
public static void FindContours(InputArray image, out Point[][] contours, out HierarchyIndex[] hierarchy, RetrievalModes mode, ContourApproximationModes method, Point offset = null)
```
参数说明:
- `image`:输入图像,必须是8位单通道图像,可以是二值化后的图像。
- `contours`:检测到的轮廓,是一个Point类型的二维数组,每个元素存储一个轮廓点的坐标。
- `hierarchy`:轮廓的层级信息,是一个HierarchyIndex类型数组,每个元素存储一个轮廓的父子关系和邻近轮廓的索引。
- `mode`:轮廓检索模式,有四种可选参数:
- `External`:只检测外轮廓。
- `List`:检测所有轮廓,但不建立轮廓间的父子关系。
- `CComp`:检测所有轮廓,建立两层轮廓间的父子关系。
- `Tree`:检测所有轮廓,建立完整的轮廓层级结构。
- `method`:轮廓逼近方法,有三种可选参数:
- `None`:不进行逼近,直接保存所有轮廓点。
- `ApproxSimple`:对轮廓点进行适当的压缩,保留关键点。
- `ApproxTC89L1`:应用Teh-Chin链代码算法进行轮廓逼近。
- `offset`:轮廓坐标的偏移量,可选参数。
使用方法示例:
```csharp
using OpenCvSharp;
using System;
class Program
{
static void Main(string[] args)
{
Mat src = new Mat(@"test.jpg", ImreadModes.GrayScale);
Point[][] contours;
HierarchyIndex[] hierarchy;
Cv2.FindContours(src, out contours, out hierarchy, RetrievalModes.List, ContourApproximationModes.ApproxSimple);
Console.WriteLine($"Find {contours.Length} contours.");
}
}
```
此代码将读取名为“test.jpg”的图像,将其转换为灰度图像,然后应用FindContours方法来检测轮廓,并将结果存储在contours变量中。最后,输出轮廓数量。
阅读全文