【发布时间】:2021-03-05 08:10:53
【问题描述】:
我在2400x3000 图像上检测到一些对象。每个图像的大小都相同。但每张图像都略有不同(可能有点旋转、倾斜等)。因此,我想使用第一张图像检测到的边界框坐标作为其他图像的参考。
所以我想找到检测到的边界框坐标数组之间的最佳匹配。这是一个例子:
[187.0, 489.0, 1501.0, 575.0]
[1810.0, 1967.0, 1917.0, 2052.0]
[1360.0, 2187.0, 1467.0, 2275.0]
[1256.0, 2188.0, 1361.0, 2276.0]
[506.0, 2197.0, 615.0, 2284.0]
[199.0, 2288.0, 306.0, 2372.0]
这是第一份坐标报告。另一个是:
[200.0, 490.0, 1491.0, 588.0]
[1813.0, 1966.0, 1919.0, 2053.0]
[1370.0, 2188.0, 1473.0, 2276.0]
[1265.0, 2189.0, 1365.0, 2275.0]
[520.0, 2200.0, 629.0, 2288.0]
[222.0, 2291.0, 327.0, 2376.0]
如您所知,这已经匹配。第一个报告中的每一行都对应于第二个。
但我想自动完成。我希望 Python 找到最近的数组并匹配它们。
我查看了数组比较、列表比较等算法,但我觉得我的情况有所不同,因为它们不是随机数而是坐标。
有人知道如何做到这一点吗?
例如:
[200.0, 490.0, 1491.0, 588.0]
应该匹配:
[187.0, 489.0, 1501.0, 575.0]
或 这个数组:
[1813.0, 1966.0, 1919.0, 2053.0]
应该匹配:
[1810.0, 1967.0, 1917.0, 2052.0]
提前致谢。
编辑:更具体地说,我需要根据匹配对两个列表进行排序。
TL;DR SOLUTION:请看詹姆斯的回答,它就像一个魅力!
【问题讨论】:
标签: python arrays numpy coordinates bounding-box