Распознавание объектов на видео с помощью библиотеки YOLO на Python

Пример простого скрипта на Python, который обрабатывает видео и собирает в список объекты, которые в нем распознаны. Видео разбивается на отдельные кадры с помощью библиотеки «openvc» и далее каждый кадр обрабатывается детекцией с помощью модуля «ultralytics YOLO», обнаруженные на кадре объекты собираются в список и уникализируются при добавлении, чтобы не было дублей. В итоге получаем все объекты, распознанные на протяжении всего видео в едином списке:

# Устанавливаем необходимые модули (при необходимости)
!pip install opencv-python
!pip install ultralytics
# подключаем необходимые модули
import cv2
from ultralytics import YOLO

# загрузка модели
model = YOLO('yolov8n.pt') 

# открытие видеофайла (или 0 для веб-камеры)
video_path = "video.mp4"
cap = cv2.VideoCapture(video_path)

class_names = []

while cap.isOpened():
    success, frame = cap.read()
    if not success:
        break

    # распознавание объектов на текущем кадре, conf - порог уверенности
    results = model(frame, conf=0.5)
    
    # собираем распознанные классы в список
    for result in results:
        class_names_map = result.names
        for box in result.boxes:
            class_id = int(box.cls[0]) 
            class_name = class_names_map[class_id] 
            confidence = float(box.conf[0])
            if class_name not in class_names:
                class_names.append(class_name)

cap.release()
cv2.destroyAllWindows()

# выводим собранный список классов распознанных объектов
print(class_names)