【发布时间】:2021-12-14 23:41:22
【问题描述】:
在类似上面的图像中,也假设二值化(1 代表白色,0 代表黑色)。 白色区域代表可步行区域,2个红点只是为了告诉你起点和终点在哪里(但实际上2个红点的像素值仍然是1)。
如何找到从起点(可能是这两个红点中的任何一个)到另一个红点的路径?
搜索了一段时间,发现很多文章只讨论找到 2 个点之间的最短路径,但没有运气在可步行区域连接点。
我对这个问题的最初想法是使用所谓的“注水”方法来找出路径,但它需要递归调用,这很慢且内存密集。 由于路径是在 RPi 上的视频流中,因此需要非常快速地绘制路径,因此计算能力并不强。
欢迎任何想法和代码。
更新
为了更清楚:
-
作为起点的点将始终是底部(固定位置)并且
-
另一个点在同一个分支迷宫中。
-
让我们假设必然存在一条现有路径。
-
可以有多个路径,但我正在寻找最短路径
-
路径不太靠近可步行区域的边缘,这意味着路径与边缘有一个边距 X(宽度)。(可选)
【问题讨论】:
-
您应该提供其他示例和限制条件。其中一个点可能位于分支迷宫的中间吗?是否一定存在现有路径?可以有(非平凡相同的)多条路径吗?
-
使用 BFS 或 A* 在像素上查找路径,如果像素路径不够好,则使用高斯/拉格朗日插值来查找曲线
-
嗨@Photon 谢谢,是的,我找到了一个可以进行 BFS 或 A* 路径查找的库,但我发现它需要很多依赖项。您对小型且有效的库有什么建议吗?
-
嗨@mozway 一个点作为起点将始终是底部(固定位置),另一个点在同一个分支迷宫中。是的,它必然是一条现有的路径。是的,可以有多条路径,但我正在寻找一条不会太靠近可步行区域边缘的最短路径。
-
我有一个解决这个问题的想法。 1-您已经知道红点在哪里,计算红点到其行中的黑色区域有多远。 2- 将这些长度相互缩放 3- 将此比例用于每个白色行并确定点,直到到达另一个红点
标签: python algorithm opencv image-processing opencv-python