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

Вычисление расстояния с помощью 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 Отображение результатов отслеживания объектов

ВОПРОСЫ И ОТВЕТЫ

Как вычислить расстояния между объектами с помощью Ultralytics YOLOv8 ?

Чтобы рассчитать расстояния между объектами, используй Ultralytics YOLOv8Тебе нужно определить центроиды ограничительных рамок обнаруженных объектов. Этот процесс включает в себя инициализацию DistanceCalculation класс из Ultralytics' solutions модуль и используя результаты отслеживания модели, вычисляй расстояния. Ты можешь обратиться к реализации в Пример расчета расстояния.

В чем преимущества использования расчета расстояния с помощью Ultralytics YOLOv8 ?

Использование расчета расстояния с помощью Ultralytics YOLOv8 дает несколько преимуществ:

  • Точность локализации: Обеспечивает точное пространственное позиционирование объектов.
  • Оценка размеров: Помогает оценить физические размеры, способствуя лучшему пониманию контекста.
  • Понимание сцены: Улучшает понимание 3D-сцены, помогая принимать решения в таких приложениях, как автономное вождение и наблюдение.

Могу ли я выполнять расчет расстояния в видеопотоке в реальном времени с помощью Ultralytics YOLOv8 ?

Да, ты можешь выполнять расчет расстояния в видеопотоке в реальном времени с помощью Ultralytics YOLOv8 . Процесс включает в себя захват видеокадров с помощью OpenCV, запуск YOLOv8 обнаружения объектов и использование DistanceCalculation класс для вычисления расстояний между объектами в последовательных кадрах. Подробную реализацию см. Пример видеопотока.

Как удалить точки, нарисованные при расчете расстояния с помощью Ultralytics YOLOv8 ?

Чтобы удалить точки, нарисованные во время расчета расстояния с помощью Ultralytics YOLOv8 , ты можешь воспользоваться правой кнопкой мыши. Это действие очистит все нарисованные тобой точки. Подробнее об этом читай в разделе примечаний под примером расчета расстояния.

Каковы ключевые аргументы в пользу инициализации класса DistanceCalculation в Ultralytics YOLOv8 ?

Основные аргументы для инициализации DistanceCalculation Класс в Ultralytics YOLOv8 включает в себя:

  • names: Словарь, отображающий индексы классов на имена классов.
  • pixels_per_meter: Коэффициент пересчета из пикселей в метры.
  • view_img: Флаг, указывающий, следует ли отображать видеопоток.
  • line_thickness: Толщина линий, нарисованных на изображении.
  • line_color: Цвет линий, нарисованных на изображении (формат BGR).
  • centroid_color: Цвет центроидов (формат BGR).

Исчерпывающий список и значения по умолчанию смотри в аргументах DistanceCalculation.



Создано 2024-01-05, Обновлено 2024-07-14
Авторы: RizwanMunawar (5), glenn-jocher (7), IvorZhu331 (1), AyushExel (1)

Комментарии