gpt4 book ai didi

java - 定义轮廓是否闭合

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:14:17 26 4
gpt4 key购买 nike

我需要一种方法来定义轮廓是代表直线还是闭合形状。在 Java 中,我有一个对象 Shape,它包含再次将其定义为单独对象的所有点。对象 Point 表示点的坐标。我尝试用递归解析形状,但对于更大的形状,超过 150 个点,性能非常差。我附上了一张我想要解析的形状的图片,以帮助更好地理解这个问题。

我正在放一张图片以便更好地可视化问题。

enter image description here

这只是展示了我得到的所有形状。我只想显示两个关闭的。

提前致谢。瓦西尔·科塞夫

最佳答案

第一个想法:使用合适的 contour tracing algorithm得到一个有序的轮廓。如果你的轮廓是闭合的,你最终会回到第一点。

第二个想法:使用 flood filling algorithm : 如果你离开对象的边界框,它是打开的,否则它是关闭的。

第三个想法:使用形态学。删除孤立的像素。查找所有端点和分支点。删除所有分支点。没有端点的连通分量是闭合轮廓(“圆”),具有两个端点的连通分量是开放轮廓(“线”)。将没有端点的连通分量重新投影到原始图像,并只保留与它们有共同部分的连通分量。我认为这可以实时实现,而且最容易实现。

关于java - 定义轮廓是否闭合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8491096/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com