Прочие библиотеки Python, используемые в ровере
В этой статье описаны прочие библиотеки проекта для работы с такими алгоритмами как: видеопоток, нейросеть и т.д..
Так же рекомендуется проверять коды, представленные ниже в отдельном проекте:

cv2
OpenCV (Библиотека компьютерного зрения с открытым исходным кодом) - нестандартная библиотека компьютерного зрения, предоставляющая широкий спектр функций для обработки изображений и видео, обнаружения объектов, распознавания объектов и многого другого.
Базовый код для вывода видеопотока:
Объяснение кода:
Инициализация библиотек:
cv2 - нестандартная библиотека python для работы с видеопотоком
Инициализация камеры:
Здесь в переменной cap инициализируется видеопоток (при значении 0 выводится изображение с внутреннего устройства вашего компьютера)
В условии прописано, что если видеопоток не открылся, выводится сообщение: Error: Unable to open stream, если видеопоток открылся: Stream opened successfully. Сообщения выводятся в терминал.
Захват и отображение видеопотока:
В этом условии пока открыт видеопоток код будет получать значения с камеры с помощью cap.read() и показывать видеопоток благодаря cv2.imshow()
Установка библиотеки:
Так как библиотека не стандартная в Python, ее необходимо установить
Откройте Visual Studio Code

Откройте терминал (Terminal -> New Terminal или комбинацией Ctrl+Shift+`)


Введите команду и установите библиотеку
В терминал пропишите: pip install opencv-python


Запуск кода:
Создайте файл и назовите его, например, cv2_lib.py

Скопируйте код в файл:

Запустите код:
При запуске кода открывается отдельно окно с трансляцией видеопотока:

Ultralytics
Ultralytics - это мощная библиотека для компьютерного зрения и машинного обучения, которая позволяет легко работать с моделями YOLO (You Only Look Once) для обнаружения объектов на изображениях и видеопотоках.
YOLO - это алгоритм обнаружения объектов в реальном времени, который может обнаруживать объекты на изображении или видеопотоке и определять их класс (например: человек, машина, собака и т.д.). Ultralytics предоставляет готовые модели YOLO, которые можно использовать для обнаружения объектов на изображениях и видеопотоках.
Пример кода:
Объяснение кода:
Инициализация библиотек:
cv2: OpenCV (Компьютерное зрение) - нестандартная библиотека python для работы с видеопотоком.
ultralytics: Ultralytics - это библиотека для работы с моделями компьютерного зрения, такими как YOLO (You Only Look Once). Она позволяет легко использовать эти модели для детекции объектов на изображениях и видео.
Инициализация модели и видеопотока:
Здесь в переменную model мы инициализируем модель yolov8n.pt, в переменную cap - видеопоток с внутреннего устройства вашего компьютера
ПРИМЕЧАНИЕ: модель устанавливается самостоятельно с первым запуском кода, если после установки модели код завершил работу, запустите его снова.
Открытие потока и работа нейросети по модели yolov8n.pt:
Здесь запускается чтение кадра с помощью переменной frame. Обработка модели происходит с помощью переменной results.
annotated_frame вырисовывает рамки и дает информацию об обнаруженном нейросетью объекте, далее уже обработанные кадры выводятся в окне видеопотока с рамками
Установка библиотеки:
Библиотека ultralytics не является предустановленной
Откройте терминал (Terminal -> New Terminal или комбинацией Ctrl+Shift+`)

Введите команду: pip install ultralytics и подтвердите команду

Запуск кода:
Создайте файл с названием ultralytics_lib.py:

Скопируйте код в файл:

Запустите код:

Как можно увидеть, в видеопотоке появились рамки распознавания. На кадре виден человек person, и телефон cell phone. В терминал выводится информация о найденных объектах.
Mediapipe
Mediapipe - это библиотека для работы с жестами в видеопотоке. Mediapipe позволяет реализовать различный функционал с помощью жестов. Процесс установки и работы с mediapipe:
Установите библиотеку:
Откройте Visual Studio Code и запустите терминал (Terminal -> New Terminal или комбинацией ctrl + shift + `)

Пропишите команду pip install mediapipe

Проверьте работоспособность библиотеки
Импорт библиотек:
Здесь мы импортируем необходимые библиотеки:
cv2: для работы с изображениями и видеопотоками (OpenCV).numpy: для работы с массивами.mediapipe: для обнаружения и отслеживания рук.time: для работы со временем (например, для расчета FPS).os: для работы с операционной системой (хотя в этом коде она не используется).
Подключение к камере:
cv2.VideoCapture(0): открывает веб-камеру (0 - это индекс первой камеры).cap.set(3, 640)иcap.set(4, 480): устанавливает ширину и высоту видеопотока.cap.set(10, 100): устанавливает яркость камеры.
Инициализация MediaPipe:
mpHands.Hands(False): создает объект для обнаружения рук. ПараметрFalseуказывает, что мы не хотим использовать модель для отслеживания жестов.npDraw: утилиты для рисования на изображениях (например, для отображения соединений между ключевыми точками рук).
Основной цикл:
В этом цикле происходит захват кадров с камеры.
cap.read()считывает кадр, аcv2.flip(img, 1)переворачивает изображение по горизонтали (для эффекта зеркала).Обработка изображения:
cv2.cvtColor(img, cv2.COLOR_BGR2RGB): преобразует изображение из формата BGR (который использует OpenCV) в RGB.hands.process(imgRGB): обрабатывает изображение и ищет руки.
Отрисовка ключевых точек и соединений:
Если обнаружены руки, для каждой руки (
handLms) мы проходим по всем ключевым точкам (landmark).h, w, c = img.shape: получает высоту, ширину и количество каналов изображения.cxиcy: вычисляют координаты ключевых точек на изображении.Если идентификатор (
id) ключевой точки равен 8 или 12 (что соответствует указательному и среднему пальцам), то рисуем круг на этих точках.npDraw.draw_landmarks: рисует соединения между ключевыми точками руки.
Расчет FPS:
cTime = time.time(): получает текущее время.fps = 1/(cTime-pTime): вычисляет количество кадров в секунду (FPS).cv2.putText: отображает FPS на изображении.
Отображение изображения:
cv2.imshow('python', img): отображает текущее изображение в окне с названием 'python'.cv2.waitKey(20): ждет 20 миллисекунд нажатия клавиши. Если нажата клавиша ESC (код 27), цикл прерывается.
Очистка ресурсов:
cv2.destroyWindow("python"): закрывает окно отображения.cap.release(): освобождает ресурсы, связанные с камерой.cv2.waitKey(1): дополнительная задержка для завершения работы.
Вывод:

Последнее обновление