Перейти к содержимому

Вычисление расстояния с помощью Ultralytics YOLOv8 🚀.

Что такое вычисление расстояния?

Измерение промежутка между двумя объектами известно как вычисление расстояния в заданном пространстве. В случае с Ultralytics YOLOv8для вычисления расстояния до выделенных пользователем границ используется центроид ограничительного поля.



Смотри: Вычисление расстояния с помощью Ultralytics YOLOv8

Визуалы

Вычисление расстояния с помощью Ultralytics YOLOv8
Ultralytics YOLOv8 Расчет расстояния

Преимущества расчета расстояний?

  • Точность локализации: Повышает точность пространственного позиционирования в задачах компьютерного зрения.
  • Оценка размеров: Позволяет оценить физические размеры для лучшего понимания контекста.
  • Понимание сцены: Способствует трехмерному пониманию окружающей обстановки для улучшения принятия решений.
Расчет расстояния
  • Щелкни левой кнопкой мыши на любых двух ограничивающих границах, чтобы рассчитать расстояние

Вычисление расстояния с помощью YOLOv8 Пример

import cv2

from ultralytics import YOLO, solutions

model = YOLO("yolov8n.pt")
names = model.model.names

cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

# Video writer
video_writer = cv2.VideoWriter("distance_calculation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Init distance-calculation obj
dist_obj = solutions.DistanceCalculation(names=names, view_img=True)

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    tracks = model.track(im0, persist=True, show=False)
    im0 = dist_obj.start_process(im0, tracks)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()
Примечание
  • Щелчок правой кнопкой мыши удалит все нарисованные точки
  • Левый клик мыши можно использовать для рисования точек

Аргументы DistanceCalculation()

Name Type Default Описание
names dict None Словарь, отображающий индексы классов на имена классов.
pixels_per_meter int 10 Коэффициент пересчета из пикселей в метры.
view_img bool False Флаг, указывающий, следует ли отображать видеопоток.
line_thickness int 2 Толщина линий, нарисованных на изображении.
line_color tuple (255, 255, 0) Цвет линий, нарисованных на изображении (формат BGR).
centroid_color tuple (255, 0, 255) Цвет нарисованных центроидов (формат BGR).

Аргументы model.track

Имя Тип По умолчанию Описание
source im0 None исходный каталог для изображений или видео
persist bool False Сохранение треков между кадрами
tracker str botsort.yaml Метод отслеживания 'bytetrack' или 'botsort'
conf float 0.3 Порог доверия
iou float 0.5 Порог IOU
classes list None Фильтруй результаты по классам, то есть classes=0, или classes=[0,2,3]
verbose bool True Отображение результатов отслеживания объектов


Created 2024-01-05, Updated 2024-06-10
Authors: glenn-jocher (6), IvorZhu331 (1), RizwanMunawar (5), AyushExel (1)

Комментарии