You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确实现边界框从右上到左下的排序?

文本边界框按右上到左下排序问题

需求概述

需要将检测到的文本边界框按照右上到左下的规则完成排序。

参数说明

  • 输入:
    • dt_boxes(数组):检测到的文本框集合,每个文本框为形状[4, 2]的数组,四个点顺序依次为左上、右上、右下、左下
  • 输出:
    • sorted_boxes(数组):排序后的文本框集合,形状与输入一致

示例输入

示例1

[[[258.0, 52.0], [329.0, 46.0], [329.0, 72.0], [260.0, 76.0]], 
 [[91.0, 32.0], [174.0, 43.0], [175.0, 68.0], [90.0, 64.0]], 
 [[182.0, 45.0], [266.0, 42.0], [266.0, 69.0], [184.0, 74.0]], 
 [[16.0, 41.0], [97.0, 39.0], [98.0, 64.0], [17.0, 69.0]], 
 [[226.0, 4.0], [296.0, 4.0], [296.0, 32.0], [227.0, 35.0]], 
 [[288.0, 9.0], [331.0, 2.0], [331.0, 36.0], [289.0, 39.0]]]

示例2

[[[224.0, 85.0], [381.0, 83.0], [381.0, 128.0], [223.0, 126.0]], 
 [[412.0, 88.0], [544.0, 81.0], [545.0, 129.0], [413.0, 134.0]], 
 [[291.0, 18.0], [357.0, 18.0], [357.0, 56.0], [292.0, 68.0]], 
 [[122.0, 12.0], [295.0, 11.0], [296.0, 57.0], [125.0, 64.0]], 
 [[350.0, 22.0], [435.0, 11.0], [435.0, 55.0], [351.0, 66.0]], 
 [[442.0, 15.0], [538.0, 11.0], [539.0, 49.0], [442.0, 57.0]], 
 [[9.0, 12.0], [125.0, 8.0], [127.0, 54.0], [10.0, 63.0]]]

尝试方案及问题

我尝试通过右上点的坐标进行排序,代码如下:

sorted_boxes = sorted(dt_boxes, key=lambda x: (x[1][1], x[1][0]), reverse=True)

但该代码未得到符合预期的排序结果,实际排序效果与期望的右上到左下顺序不符。

期望排序效果

期望排序后,边界框按照从上到下、从右到左的逻辑排列(即先按垂直方向从上到下分组,同一行内的框从右到左排序,对应视觉上的右上到左下顺序)。


内容的提问来源于stack exchange,提问作者ahmed osama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 18:15:59