Нахождение точного расстояния между объектами на изображении YOLO

Рейтинг: 0Ответов: 0Опубликовано: 30.07.2025

Обучил модель YOLO на поиск объекта. Далее происходит измерение расстояния между объектами: известно, какой размер имеет сам объект, и несложными формулами пиксели переводятся в миллиметры. Подскажите, пожалуйста, как сделать так, чтобы сильно повысить точность измерения расстояния? Сейчас при измерении получается очень высокий диапазон значений, никакой стабильности.

Вычисление размеров

objects = {'line': []}
for i, box in enumerate(corners):
    label = names[int(cls[i])]
    pts = box.reshape(4, 2)
    center = self.get_obb_center(pts)
    width = self.get_obb_width(pts)
    if label in objects:
        objects[label].append((center, width, pts))
scale_mm_per_pixel = 3.0 / np.median([w for _, w, _ in objects['line']])

Отрисовка линий

lines_sorted = sorted(objects['line'], key=lambda x: x[0][0])
for i in range(len(lines_sorted) - 1):
    c1, w1, _ = lines_sorted[i]
    c2, w2, _ = lines_sorted[i + 1]
    right1 = c1[0] + w1 / 2
    left2 = c2[0] - w2 / 2
    dist_mm = (left2 - right1) * scale_mm_per_pixel
    pt1 = (int(right1), int(c1[1]))
    pt2 = (int(left2), int(c2[1]))
    mid = (int((pt1[0] + pt2[0]) / 2) - 15,
                 int((pt1[1] + pt2[1]) / 2) - 10)
    cv2.line(visualization, pt1, pt2, (0, 255, 0), 2)
    cv2.putText(visualization, f"{dist_mm:.2f}", mid,            
                          cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 0), 2)

введите сюда описание изображения

Ответы

Ответов пока нет.