Прочие библиотеки Python, используемые в ровере

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

Так же рекомендуется проверять коды, представленные ниже в отдельном проекте:

Папка проекта

cv2

OpenCV (Библиотека компьютерного зрения с открытым исходным кодом) - нестандартная библиотека компьютерного зрения, предоставляющая широкий спектр функций для обработки изображений и видео, обнаружения объектов, распознавания объектов и многого другого.

Базовый код для вывода видеопотока:

Объяснение кода:

  1. Инициализация библиотек:

cv2 - нестандартная библиотека python для работы с видеопотоком

  1. Инициализация камеры:

Здесь в переменной cap инициализируется видеопоток (при значении 0 выводится изображение с внутреннего устройства вашего компьютера)

В условии прописано, что если видеопоток не открылся, выводится сообщение: Error: Unable to open stream, если видеопоток открылся: Stream opened successfully. Сообщения выводятся в терминал.

  1. Захват и отображение видеопотока:

В этом условии пока открыт видеопоток код будет получать значения с камеры с помощью cap.read() и показывать видеопоток благодаря cv2.imshow()

Установка библиотеки:

Так как библиотека не стандартная в Python, ее необходимо установить

  1. Откройте Visual Studio Code

Пустое окно VS Code
  1. Откройте терминал (Terminal -> New Terminal или комбинацией Ctrl+Shift+`)

Открытие терминала
Окно с открытым терминалом
  1. Введите команду и установите библиотеку

В терминал пропишите: pip install opencv-python

Команда установки библиотеки OpenCV
Процесс установки OpenCV в терминале

Запуск кода:

  1. Создайте файл и назовите его, например, cv2_lib.py

Файл cv2_lib.py в окне иерархии
  1. Скопируйте код в файл:

Окно программирования в файле cv2_lib.py
  1. Запустите код:

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

Результат работы кода

Ultralytics

Ultralytics - это мощная библиотека для компьютерного зрения и машинного обучения, которая позволяет легко работать с моделями YOLO (You Only Look Once) для обнаружения объектов на изображениях и видеопотоках.

YOLO - это алгоритм обнаружения объектов в реальном времени, который может обнаруживать объекты на изображении или видеопотоке и определять их класс (например: человек, машина, собака и т.д.). Ultralytics предоставляет готовые модели YOLO, которые можно использовать для обнаружения объектов на изображениях и видеопотоках.

Пример кода:

Объяснение кода:

  1. Инициализация библиотек:

    1. cv2: OpenCV (Компьютерное зрение) - нестандартная библиотека python для работы с видеопотоком.

    2. ultralytics: Ultralytics - это библиотека для работы с моделями компьютерного зрения, такими как YOLO (You Only Look Once). Она позволяет легко использовать эти модели для детекции объектов на изображениях и видео.

  2. Инициализация модели и видеопотока:

Здесь в переменную model мы инициализируем модель yolov8n.pt, в переменную cap - видеопоток с внутреннего устройства вашего компьютера

ПРИМЕЧАНИЕ: модель устанавливается самостоятельно с первым запуском кода, если после установки модели код завершил работу, запустите его снова.

  1. Открытие потока и работа нейросети по модели yolov8n.pt:

Здесь запускается чтение кадра с помощью переменной frame. Обработка модели происходит с помощью переменной results.

annotated_frame вырисовывает рамки и дает информацию об обнаруженном нейросетью объекте, далее уже обработанные кадры выводятся в окне видеопотока с рамками

Установка библиотеки:

Библиотека ultralytics не является предустановленной

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

Открытие терминала
  1. Введите команду: pip install ultralytics и подтвердите команду

Команда в терминале

Запуск кода:

  1. Создайте файл с названием ultralytics_lib.py:

файл ultralytics_lib.py в окне иерархии
  1. Скопируйте код в файл:

Код в окне программирования файла ultralytics_lib.py
  1. Запустите код:

Результат запуска кода

Как можно увидеть, в видеопотоке появились рамки распознавания. На кадре виден человек person, и телефон cell phone. В терминал выводится информация о найденных объектах.

Mediapipe

Mediapipe - это библиотека для работы с жестами в видеопотоке. Mediapipe позволяет реализовать различный функционал с помощью жестов. Процесс установки и работы с mediapipe:

  1. Установите библиотеку:

Откройте Visual Studio Code и запустите терминал (Terminal -> New Terminal или комбинацией ctrl + shift + `)

Открытие терминала

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

Установка mediapipe
  1. Проверьте работоспособность библиотеки

  1. Импорт библиотек:

    Здесь мы импортируем необходимые библиотеки:

    • cv2: для работы с изображениями и видеопотоками (OpenCV).

    • numpy: для работы с массивами.

    • mediapipe: для обнаружения и отслеживания рук.

    • time: для работы со временем (например, для расчета FPS).

    • os: для работы с операционной системой (хотя в этом коде она не используется).

  2. Подключение к камере:

    • cv2.VideoCapture(0): открывает веб-камеру (0 - это индекс первой камеры).

    • cap.set(3, 640) и cap.set(4, 480): устанавливает ширину и высоту видеопотока.

    • cap.set(10, 100): устанавливает яркость камеры.

  3. Инициализация MediaPipe:

    • mpHands.Hands(False): создает объект для обнаружения рук. Параметр False указывает, что мы не хотим использовать модель для отслеживания жестов.

    • npDraw: утилиты для рисования на изображениях (например, для отображения соединений между ключевыми точками рук).

  4. Основной цикл:

    В этом цикле происходит захват кадров с камеры. cap.read() считывает кадр, а cv2.flip(img, 1) переворачивает изображение по горизонтали (для эффекта зеркала).

  5. Обработка изображения:

    • cv2.cvtColor(img, cv2.COLOR_BGR2RGB): преобразует изображение из формата BGR (который использует OpenCV) в RGB.

    • hands.process(imgRGB): обрабатывает изображение и ищет руки.

  6. Отрисовка ключевых точек и соединений:

    • Если обнаружены руки, для каждой руки (handLms) мы проходим по всем ключевым точкам (landmark).

    • h, w, c = img.shape: получает высоту, ширину и количество каналов изображения.

    • cx и cy: вычисляют координаты ключевых точек на изображении.

    • Если идентификатор (id) ключевой точки равен 8 или 12 (что соответствует указательному и среднему пальцам), то рисуем круг на этих точках.

    • npDraw.draw_landmarks: рисует соединения между ключевыми точками руки.

  7. Расчет FPS:

    • cTime = time.time(): получает текущее время.

    • fps = 1/(cTime-pTime): вычисляет количество кадров в секунду (FPS).

    • cv2.putText: отображает FPS на изображении.

  8. Отображение изображения:

    • cv2.imshow('python', img): отображает текущее изображение в окне с названием 'python'.

    • cv2.waitKey(20): ждет 20 миллисекунд нажатия клавиши. Если нажата клавиша ESC (код 27), цикл прерывается.

  9. Очистка ресурсов:

    • cv2.destroyWindow("python"): закрывает окно отображения.

    • cap.release(): освобождает ресурсы, связанные с камерой.

    • cv2.waitKey(1): дополнительная задержка для завершения работы.

Вывод:

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