我试图对对象检测后从右到左、从上到下获得的包围框列表进行排序。下面是包围框的位置
bbox = [(637, 207, 681, 207), (679, 99, 726, 99), (747, 497, 798, 497), (829, 124, 892, 124), (1002, 131, 1059, 131), (1010, 656, 1071, 656)] 我根据xmin值对这个列表进行排序,如下所示
sorted(bbox,key=lambda x:x[2][0])最后,我得到了包围框的安排,如下图所示
序列不整齐,序列应该从左到右、从上到下开始,如下图所示
如有任何建议或指引可达此目的,我们将不胜感激。
发布于 2022-03-14 17:35:07
你想要按左上角最近的点排序吗?如果是这样的话,您需要计算出从那个拐角处的距离,然后再排序:
import numpy as np
bbox = [(637, 207, 681, 207), (679, 99, 726, 99), (747, 497, 798, 497), (829, 124, 892, 124), (1002, 131, 1059, 131), (1010, 656, 1071, 656)]
arr = np.array(bbox)
r = (arr[:, 0]**2 + arr[:, 1] **2)**0.5
print(np.argsort(r))这将打印出各点的顺序。我假设每个点的前2个坐标是x和y,原点在左上角。
https://stackoverflow.com/questions/71471798
复制相似问题