Вычисление расстояния с помощью 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.