【发布时间】:2013-12-27 21:59:28
【问题描述】:
我有以下格式的数据,二维 x,y 坐标列表:
[(6, 7), (2, 4), (8, 9), (3, 7), (5, 4), (9, 9)]
我正在尝试遍历列表以找到格式为 [(minx,miny),(maxx,miny),(maxx,maxy),(minx,maxy)] 的最小边界框
因此,我编写了以下代码,但它似乎不起作用。可能与我没有将其传递给数组而不是列表的事实有关。输入和代码如下,打印坐标返回前面提到的列表:
os.chdir("filepath")
with open ('file.csv') as csvfile:
coords = [(int(x), int(y)) for x, y in csv.reader(csvfile, delimiter= ',')]
print coords
def bounding_box(coords):
min_x, min_y = numpy.min(coords[0], axis=0)
max_x, max_y = numpy.max(coords[0], axis=0)
return numpy.array(
[(min_x, min_y), (max_x, min_y), (max_x, max_y), (min_x, max_y)])
谁能指出我正确的方向?如果没有帮助,请随意忽略上面的整个代码。
【问题讨论】:
-
您可以尝试在 Google 上搜索“最小边界矩形”,或者您可以阅读“赫尔算法”。您也可以提供输入/输出示例。
-
@christian 谢谢,我试过谷歌搜索,但在从我的数据输入构建方面我找不到 mbr 的任何东西。此外,凸包算法对于我需要的东西来说太复杂了,只需定义四个角就足够了。
-
请按照我的说法,您能提供输入/输出示例吗?因此,我们更容易为您提供帮助。
-
所有你需要做的就是从对
np.min和np.max的调用中删除[0],即np.min(coords, axis=0)。