最近我花了不少时间来实现Suzuki-Abe轮廓检测算法(1985) 的纯C#版本,适用于Unity。

目标是从Texture2D数据中直接提取轮廓,而不依赖OpenCV或原生插件。

我想支持的几点内容包括:

  • 提取外轮廓和孔洞
  • 父子轮廓层次结构
  • 4连通性和8连通性
  • Unity友好的坐标
  • 像素艺术的边界提取

示例使用基本如下:

List<轮廓>轮廓 =
    ContourDetector.FindContours(
        texture,
        像素 => 像素.a > 0);

你还可以将轮廓像素转换为像素对齐的边界多边形:

List<Vector2Int>边界 =
    轮廓.ToPixelBoundary();

轮廓可以用于:

  • 精灵轮廓生成
  • 网格生成
  • 多边形碰撞器
  • 生成性几何学
  • 图像分析工具
  • 像素精确边界提取

我很好奇其他人如何在Unity中处理轮廓提取或图像向量化。

(也将其转换为一个小的Unity包后完成了实现。)