如何操纵跟踪器区域使其成为正方形?

How can I manipulate the tracker area to make it into a square shape?

我目前正在从事一个关于相机跟踪应用程序的项目。当我不得不改变检测到的物体的区域时,我发现没什么问题。该区域必须转换为正方形,以便在屏幕上显示时更加合适和真实。

这是我正在处理的几行代码。

for cam, coll in _colls.items():
  # get all track
  tracks = coll.getAllTracks()         #tracks is a dictionary that stores the details of object that being detected.

  for x in range(len(tracks)):
    # get the selected area for croping
    edge = tracks[x]['box']

    crop_img = frame[int(edge[0]):int(edge[2]), int(edge[1]):int(edge[3])]
    # edge[0] = ymin
    # edge[1] = xmin
    # edge[2] = ymax
    # edge[3] = xmax

根据该代码,我找到了一个正在检测对象的区域。

问题是当我得到边缘时,它并不总是正方形的形式,它也可以是矩形的。应该是怎么操作,从那个边缘点,我能不能像下图那样做一个正方形?

您必须计算该区域的宽度和高度。计算宽度和高度之间的差异,并放大该区域的较小一侧。例如:

left, right, top, bottom = edge[0], edge[1], edge[2], edge[3]

width = right - left
height = bottom - top
delta = width - height

if delta > 0:
    top -= delta / 2
    bottom += delta / 2
else
    left -= -delta / 2
    right += -delta / 2

crop_img = frame[int(left):int(top), int(right):int(bottom)]