Python - 根据分数和位置对框进行排序

阿巴格肖

我一直在研究以下问题:我有一个未知数量的矩形数组,每个矩形都有相应的“分数”:

[{"topleft": {"x": 20, "y": 60}, "bottomright": {"x": 540,"y": 600}, "score": 50}, etc.]

我想依次删除这些矩形,直到到达最后一个矩形。然而,最大的规定是,在每次迭代中,我都想删除得分最低最外面的矩形之一通过我的意思是,如果一个边界框是围绕所有剩余的矩形得出,最外面将是那些触摸该边框。

下面是一个例子:

在此处输入图片说明

出于此说明的目的,得分最高的框是红色的,得分最低的框是浅蓝色(那里最小的矩形),深蓝色的框是中等得分。

首先,我将删除包含所有这些的最大红色方块,因为它是唯一与“边界框”共享一侧的框。

然后三个盒子将与边界框共享一侧,红色的小盒子和深蓝色的盒子。我会删除其中一个深蓝色的(以得分最小的为准)

这将一直持续到我只剩下小红框(在这种情况下)。希望这是有道理的。

到目前为止,我基本上已经设计了一个算法,该算法循环遍历所有剩余的框并找到分数最小的框,该框也与边界框共享一侧 - 然后我删除该框并重复。这工作得很好 - 但对我来说似乎效率很低。

我想知道是否有人对如何按照需要删除的顺序对框进行排序有任何聪明的想法,然后我只需遍历已排序的数组并按顺序删除这些框。或者,这样做甚至不会更有效率?

还有 D。

您可以构建四个列表,每个列表对盒子进行排序,这样每个列表都具有从外到内的顺序,从上到下、从下到上、从左到右、从右到左。然后你可以选择要删除的框:

b = min([tb[0], bt[0], lr[0], rl[0]], key=lambda b: b["score"])
tb.remove(b)
bt.remove(b)
lr.remove(b)
rl.remove(b)

建立这些列表中的每一个都需要一种排序:

tb = sorted(boxes, key=lambda b: b["topleft"]["y"])
lr = sorted(boxes, key=lambda b: b["topleft"]["x"])
bt = sorted(boxes, key=lambda b: b["bottomright"]["y"], reverse=True)
rl = sorted(boxes, key=lambda b: b["bottomright"]["x"], reverse=True)

这些中的每一个都沿着盒子的四个边之一按从外到内的顺序排列盒子。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据基于分界符的python位置拆分数据框

来自分类Dev

如何根据Python中的字符位置拆分数据框列?

来自分类Dev

根据值索引和字母顺序对python字典进行排序

来自分类Dev

使用python根据其套件和值对卡进行排序

来自分类Dev

如何使用python pandas根据特定的(字符串)列对数据框进行排序?

来自分类Dev

根据特定列python数据框对特定列值进行排序

来自分类Dev

根据值对python中的元组进行排序

来自分类Dev

根据python中的属性对xml进行排序

来自分类Dev

Python 和 OpenCV:根据两个标准对轮廓列表进行排序

来自分类Dev

在python中的字母后对字符串列表和位置数字进行排序

来自分类Dev

根据长度对python列表进行排序,然后根据内容进行排序

来自分类Dev

在python中对字典进行排序和汇总

来自分类Dev

在PHP和Python中进行冒泡排序

来自分类Dev

根据分数对 CSV 文件进行排序

来自分类Dev

根据python中的时间戳对字典进行排序

来自分类Dev

根据指标对候选人列表进行排序-Python?

来自分类Dev

如何根据熊猫,Python中的排序值进行分组?

来自分类Dev

Python:根据对象的属性对对象列表进行排序

来自分类Dev

Python-根据它们的总和对列表进行排序

来自分类Dev

根据python中的文件名对文件进行排序

来自分类Dev

根据Python中的创建日期对文件列表进行排序

来自分类Dev

Python根据最后2个字母对单词进行排序

来自分类Dev

Python:根据两个属性对列表进行排序

来自分类Dev

根据python中单词的元音数量对列表进行排序

来自分类Dev

如何根据内容在Python中对列表进行重新排序

来自分类Dev

Python:如何根据特定字符的数量对列表进行排序

来自分类Dev

根据列表 Python 中的特定部分对列表进行排序

来自分类Dev

Python根据字母而不是月份顺序对月份进行排序

来自分类Dev

Python 和排序:对复杂数组中的元素进行排序

Related 相关文章

  1. 1

    根据基于分界符的python位置拆分数据框

  2. 2

    如何根据Python中的字符位置拆分数据框列?

  3. 3

    根据值索引和字母顺序对python字典进行排序

  4. 4

    使用python根据其套件和值对卡进行排序

  5. 5

    如何使用python pandas根据特定的(字符串)列对数据框进行排序?

  6. 6

    根据特定列python数据框对特定列值进行排序

  7. 7

    根据值对python中的元组进行排序

  8. 8

    根据python中的属性对xml进行排序

  9. 9

    Python 和 OpenCV:根据两个标准对轮廓列表进行排序

  10. 10

    在python中的字母后对字符串列表和位置数字进行排序

  11. 11

    根据长度对python列表进行排序,然后根据内容进行排序

  12. 12

    在python中对字典进行排序和汇总

  13. 13

    在PHP和Python中进行冒泡排序

  14. 14

    根据分数对 CSV 文件进行排序

  15. 15

    根据python中的时间戳对字典进行排序

  16. 16

    根据指标对候选人列表进行排序-Python?

  17. 17

    如何根据熊猫,Python中的排序值进行分组?

  18. 18

    Python:根据对象的属性对对象列表进行排序

  19. 19

    Python-根据它们的总和对列表进行排序

  20. 20

    根据python中的文件名对文件进行排序

  21. 21

    根据Python中的创建日期对文件列表进行排序

  22. 22

    Python根据最后2个字母对单词进行排序

  23. 23

    Python:根据两个属性对列表进行排序

  24. 24

    根据python中单词的元音数量对列表进行排序

  25. 25

    如何根据内容在Python中对列表进行重新排序

  26. 26

    Python:如何根据特定字符的数量对列表进行排序

  27. 27

    根据列表 Python 中的特定部分对列表进行排序

  28. 28

    Python根据字母而不是月份顺序对月份进行排序

  29. 29

    Python 和排序:对复杂数组中的元素进行排序

热门标签

归档