我正在尝试创建一个点列表,用于尽可能接近地描述给定图像的边界多边形。多边形将用于计算两个图形之间的碰撞。因此,它们必须同时准确且小(根据每个多边形的点数)。
我的基本图像(例如PNG)总是单色图像,中间有一个形状为黑色的“斑点”。我试图通过使用autotrace
cli工具来实现这一点,该工具将我的图像转换为svg。我正在解析svg中的路径以获取边界多边形的坐标。
此解决方案有效,但效率很低。下面显示的autotrace命令生成的点是准确的。
autotrace -output-format svg --corner-threshold=360 --remove-adjacent-corners --despeckle-level=20 -output-file sample.svg sample.gif
对于附加到这篇文章的示例形状,这会生成~800个点,其中 - 理论上 - 4就足够了(每个“角落”一个)。
由于我没有在运行时插入曲线,因此生成的svg必须仅由行组成。
如何获得足够精确但占地面积小的正确边界?