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

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

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

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



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

Визуалы

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

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

  • Точность локализации: Повышает точность пространственного позиционирования в задачах компьютерного зрения.
  • Size Estimation: Allows estimation of object size for better contextual understanding.
Расчет расстояния
  • Щелкни левой кнопкой мыши на любых двух ограничивающих границах, чтобы рассчитать расстояние

Вычисление расстояния с помощью 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()
Примечание
  • Щелчок правой кнопкой мыши удалит все нарисованные точки
  • Левый клик мыши можно использовать для рисования точек
Distance is Estimate
Distance will be an estimate and may not be fully accurate, as it is calculated using 2-dimensional data, which lacks information about the object's depth.

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

Name Type Default Описание
names dict None Словарь названий классов.
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 str None Specifies the source directory for images or videos. Supports file paths and URLs.
persist bool False Enables persistent tracking of objects between frames, maintaining IDs across video sequences.
tracker str botsort.yaml Specifies the tracking algorithm to use, e.g., bytetrack.yaml или botsort.yaml.
conf float 0.3 Sets the confidence threshold for detections; lower values allow more objects to be tracked but may include false positives.
iou float 0.5 Sets the Intersection over Union (IoU) threshold for filtering overlapping detections.
classes list None Filters results by class index. For example, classes=[0, 2, 3] only tracks the specified classes.
verbose bool True Controls the display of tracking results, providing a visual output of tracked objects.

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

Как вычислить расстояния между объектами с помощью 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: Словарь, отображающий индексы классов на имена классов.
  • view_img: Флаг, указывающий, следует ли отображать видеопоток.
  • line_thickness: Толщина линий, нарисованных на изображении.
  • line_color: Цвет линий, нарисованных на изображении (формат BGR).
  • centroid_color: Цвет центроидов (формат BGR).

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


📅 Created 8 months ago ✏️ Updated 2 days ago

Комментарии