我正在使用NetworkX,opencv,numpy和python在图中找到shortest_path
。它并不总是提供我需要的东西。 shortest_path函数查找从图像顶部到底部的路径。我的路总是在变化。对于每个图像,始终知道起点和目标点。因此,我想找到这些点(起点和目标)之间的最短路径。但是,当源点和目标点不是节点且不在G中时,它并不能满足我的需求。
shortest_path(G, source=None, target=None, weight=None)
如何找到图像中两个特定坐标点之间的shortest_path
?此外,如何分配像素坐标作为源和目标?例如,来源是[45 66]
,目标是[250 350]
答案 0 :(得分:0)
对于第二个问题,节点可以具有所需的尺寸。
例如,考虑以下网格。
import networkx as nx
g = nx.grid_2d_graph(2,2)
print(g.nodes()) #[(0, 0), (0, 1), (1, 0), (1, 1)]
print(g.edges()) #[((0, 0), (1, 0)), ((0, 0), (0, 1)), ((0, 1), (1, 1)), ((1, 0), (1, 1))]
print(nx.shortest_path(g, source=(0, 0), target=(1,0))) #[(0, 0), (1, 0)]
或具有更大尺寸:
g = nx.grid_graph(dim=[2,2,2,2])
g.nodes()
#[(0, 0, 0, 0), (1, 0, 0, 0), (0, 1, 0, 0), (0, 0, 1, 0), (0, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 0, 1, 1), (1, 0, 1, 0), (0, 1, 1, 0), (1, 0, 1, 1), (0, 1, 1, 1), (1, 1, 0, 0), (1, 1, 0, 1), (1, 1, 1, 0), (1, 1, 1, 1)]
对于其他问题:
我的路径总是变化的:这取决于边缘的权重,如果最短的路径不是唯一的,则通常会发生变化
当源点和目标点不是节点且不在G中时:networkx查找G的两个节点之间的最短路径,如果节点不在G中,则它将不起作用