Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svg 为给定图像自动生成边界多边形_Svg_Polygon_Detection - Fatal编程技术网

Svg 为给定图像自动生成边界多边形

Svg 为给定图像自动生成边界多边形,svg,polygon,detection,Svg,Polygon,Detection,我正在尝试创建一个点列表,旨在尽可能接近地描述给定图像的边界多边形。多边形将用于计算两个图形之间的碰撞。因此,它们必须同时精确和小(就每个多边形的点而言) 我的基础图像(例如PNG)总是单色图片,中间有一个黑色的“斑点”。我试图通过使用autotracecli工具来实现这一点,该工具将我的图像转换为svg。我目前正在解析svg中的路径,以获取边界多边形的坐标 这个解决方案有效,但效率很低。下面显示的autotrace命令生成的点非常精确 autotrace -output-format svg

我正在尝试创建一个点列表,旨在尽可能接近地描述给定图像的边界多边形。多边形将用于计算两个图形之间的碰撞。因此,它们必须同时精确和小(就每个多边形的点而言)

我的基础图像(例如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必须只包含直线


如何获得足够精确但占用空间较小的适当边界多边形?

给出您的示例-所提供图像的边界多边形将有相当多的4个顶点。然而,如果你真的期望只有4个顶点,那么也许你在寻找边界矩形?不,我不是在寻找非常简单的边界框。前面提到的四个点的意思是:每个尖端上有一个点加上缺口上的一个点,如红点所示。如果你把这4个点连在一起,这个形状很好地描述了这个形状。恐怕我不能同意。你添加的这4个点根本不能很好地描述形状。充其量只是一个近似值,但您确实声明了。。。“我正在尝试创建一个点列表,旨在尽可能接近地描述给定图像的边界多边形。”我有相同或非常相似的需求。手动生成和测试点和三角形列表以创建用于碰撞检测的边界多边形是非常繁琐的。其他人是如何做到这一点的?我猜他们中的大多数人可能使用3D建模工具和游戏引擎等等,游戏引擎为他们进行碰撞检测,并使用从3D建模工具导出的几何体。想一想,我打赌我可以使用3D建模工具来创建2D模型,然后。。基本上在我的东西中使用这些模型。。