【问题标题】:Finding minimum bounding box for a set of points寻找一组点的最小边界框
【发布时间】:2020-08-05 20:57:33
【问题描述】:

我试图找到一组点的最小边界框。我用图书馆https://bitbucket.org/william_rusnack/minimumboundingbox/src/master/

我想将这些坐标包含在最小边界框中:-

#INPUT COORDINATES
    ('297.153338872911', '373.3796368193535')
    ('222.75', '278.7499999999999')
    ('222.75', '278.7499999999999')
    ('42.25', '251.75')
    ('179.25', '390.5')
    ('298.403338872911', '373.3796368193535')
    ('0.6400000000000537', '240.0000000000201')
    ('75.26400000000632', '390.9120000000328')


 # OUTPUT BOUNDING BOX COORDINATES , PLOTTED 
[(-22.685403520024096, 373.8408037637353),
 (0.6400000000000432, 240.0),
 (288.84381342985046, 428.133250381587),
 (312.16921694987457, 294.2924466178517)]

但是从输出本身可以看出 边界框以倾斜/倾斜的形式出现。没关系,但我想要的是将边界框直接连接到我桌面的水平和垂直平面。我怎样才能在不丢失边界框功能的情况下实现这一点(即,在使边界框变直的同时弹出边界框的任何点)?

我尝试了这段代码also,但它会旋转矩形并找到可能的最佳边界框,该边界框主要是倾斜的矩形。但我绝对想要一个直的矩形。

【问题讨论】:

  • 您要查找最小值和最大值吗?
  • @MadPhysicist 添加了更多信息

标签: python algorithm


【解决方案1】:

为了便于表示,我们假设您的点是一个对(2 元组)的列表,每对是一个点的x,y 坐标。

point_list = [(10,12), (11,14), (15,20), ...]

您的正交边界框只有 x 和 y 限制:每个坐标的最小值和最大值:

x_min = min(point[0] for point in point_list)
x_max = max(point[0] for point in point_list)
y_min = min(point[1] for point in point_list)
y_max = max(point[1] for point in point_list)

您的边界框是由这些最小/最大值定义的四个边。

【讨论】:

  • 在我的问题中添加了更多信息
  • 我看到了;我看不到添加的信息如何影响这个答案。请解释一下。
  • 我试过你的代码,我得到 x_min,y_min = (0.64, 240) & x_max,y_max = (298.4, 390.9) 。如何从这两个坐标中获取边界框?你可以试试看我的输入坐标
  • 你卡在哪里了?您现在有了每个角的xy 坐标。
  • 不,我的代码给出了所有四个边界。 只从数据中提取了两个角。你现在有左下角和右上角的点......另外两个点的坐标是多少?你必须做出所有四种组合。顺便说一句,我在这里以“教师”模式工作......你如此接近! :-)
猜你喜欢
  • 2020-06-04
  • 2014-01-11
  • 1970-01-01
  • 2014-07-17
  • 2015-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多