1
0
有边界的两个区域是指在一个小的区域内应该有三种颜色:红色、黑色和绿色。
因此,一个非常无效的解决方案出现了:
使用
当然,还有足够的空间进行优化(例如,以50像素的步幅进行,并不断降低精度)。 因为黑色是最不常用的颜色,所以您首先要搜索黑色区域。 这应该解释我在本主题的各种评论中所写的内容:
这很简单。这样搜索只需要大约 2±4毫秒 (扫描并找到最近的点)。 您还可以递归地进行搜索:首先,对于大型图像,精度为1000,然后精度为100,最后精度为10。 findclosestpoints实际上会为您提供一个估计的矩形区域,边界应该位于该区域(通常边界是这样的)。 然后您可以使用我在其他注释中描述的向量方法。 |
2
0
我读你的问题是问这两点是否存在于不同的地区。这是正确的吗?如果是这样,我可能会使用 Flood Fill . 实现起来并不太困难(不要递归地实现它,几乎肯定会耗尽堆栈空间),而且它可以看到复杂的情况,比如有边界的U形区域 之间 两点,但实际上不是不同的区域。基本上运行Flood Fill,当坐标与目标坐标匹配时返回true(或者当它足够接近以满足您的需求时,取决于您的用例)。 [编辑]这里是 an example 我为我的一个项目写的洪水填充。这个项目是CPAL许可的,但是实现对于我使用它的目的是非常具体的,所以不要担心复制它的某些部分。它不使用递归,所以它应该能够缩放到像素数据。 [编辑2]我误解了任务。我没有任何示例代码可以完全满足您的需求,但是我可以说,比较每个像素的像素,整个两个区域并不是您想要做的事情。您可以通过将每个区域划分为一个更大的网格(可能是25x25像素)来降低复杂性,并首先比较这些扇区,如果其中任何一个扇区足够接近,则只在这两个扇区内进行每像素比较。 [第2.5版][四叉树] 3 可能也能帮助你。我对它没有太多的经验,但我知道它在二维碰撞检测中很流行,这类似于你在这里所做的。可能值得研究。 |
Robert King · Unity C#语法问题-转换位置 1 年前 |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
i_sniff_ket · 在unity之外使用unity类 2 年前 |