比较两张不同尺寸的图像的坐标

时间:2019-06-08 08:40:39

标签: python image size rescale

我正在使用python,我需要考虑到地面真实性和锚点框(通常是两个矩形)来计算并集上的交点。问题是我在具有53x64大小的图像上生成锚点,而我却拥有相对于424x512大小的图像的地面真实坐标。 我得到的信息是:

  • 锚点:[x1,y1,x2,y2]对应于53x64图像;
  • GT:相对于424x512图像,[x1,y1,x2,y2];

尤其是它们是矩形的两个相对角度的坐标。 因此,问题在于这种方式的距离和面积不成比例。 所以问题是,如何正确地比较这两个要素?

2 个答案:

答案 0 :(得分:0)

这是我的答案。希望我能正确理解您的要求。

Coordinates = {"x1" : 3, "x2" : 11, "y1" : 7, "y2" : 13}
NewCoords = {}
for key, value in Coordinates:
    NewCoords[key] = (value*8)
print(NewCoords)
# {"x1" : 24, "x2" : 88, "y1" : 56, "y2" : 104}

答案 1 :(得分:0)

根据所获得的信息,您可以将锚点图像坐标中给定的点转换为真实图像上的等价点。可以通过使用linear interpolation来完成此操作,如下所示。类似的数学运算可用于计算逆变换(真相⇒锚)。

您可以使用它来将坐标转换为相对于真实图像的等效位置。然后,您应该能够使用这些转换后的值正确地计算距离,角度等。

anchor_height, anchor_width = 53, 64
gt_height, gt_width = 424, 512

def transform(x, y):
    return x/anchor_width * gt_width, y/anchor_height * gt_height

print(transform(0, 0))      # - > (0.0, 0.0)
print(transform(32, 26.5))  # - > (256.0, 212.0)
print(transform(64, 53))    # - > (512.0, 424.0)```