Я работаю над проектом, в котором мне нужно рассчитать расстояние между обнаруженными людьми в прямом эфире. Для этого я следую приведенному ниже конвейеру:
1. Detect person using MobilenetSSD Caffe model
2. Extract bouding box of the persons detected
3. Calculate the centroid of each bouding box
4. Calculate the distance between the each centroid
Ниже приведен фрагмент кода:
for (id1, p1), (id2, p2) in combinations(centroid_dict.items(), 2):
ec_dist = dist.euclidean((p1[0], p1[1]), (p2[0], p2[1]))
print("Euclidean distance {}".format(ec_dist))
В приведенном выше коде id1
и id2
- это идентификаторы двух человек. p1[0]
и p1[1]
- координаты x
и y
человека 1, а p2[0]
p2[1]
- координаты x
y
человека2. Я вычисляю euclidean
расстояние между x
и y
координатами обоих людей.
Теперь предположим, что два человека стоят на расстоянии 2 метра друг от друга, для этого я получаю евклидово расстояние в коде как 250
. Теперь предположим, что если эти два человека сейчас стоят немного далеко от камеры, но расстояние между ними по-прежнему составляет 2 метра, в этом случае я получаю евклидово расстояние как 343, что означает, что расстояние между людьми в коде увеличивается, если они немного далеки от камеры.
Первоначально я думал, что этот logi c будет работать нормально независимо от того, где находятся люди в кадре, но похоже, что он не работает. Может ли кто-нибудь помочь мне предложить несколько хороших рабочих решений для этого. Пожалуйста помоги. Спасибо