/everything-recognition

Упражнение на чтение кода. Распознавание образов

Primary LanguagePython

Программа для распознавания образов

Проект представляет собой программу для захвата видео с устройства и распознавания образов. Под капотом используется библиотека opencv. Образы распознаются методом каскад хаара (Haar Cascade) по предварительно обученной модели haarcascades.

Состав программы

Программа состоит из 2 скриптов и директории с моделью(haarcascades):

config.py

Скрипт с параметрами каскада. Под каскадом здесь подразумевается распознаваемый объект. Здесь указывается путь к xml-файлу каскада, цвет и необходимость его отрисовки.
Распознаются следующие объекты:

  • Face front - лицо в анфас
  • Face profile - лицо в профиль
  • Smile - улыбка
  • Eyes - глаза
  • Full body - тело в полный рост
  • Cat face - кошачья мордочка

run.py

Основной функционал реализован здесь. После запуска скрипта выполняется захват видео с устройства видеозаписи(веб-камера) и опознанные объекты выделяются цветными прямоугольниками. Если на компьютере отсутствует камера, то программа сообщит об этом пользователю и завершит работу.
Программа будет работать до тех пор, пока пользователь не пошлет сигнал завершения работы q.
Распознанные образы будут выделяться цветными прямоугольниками в случае, если в параметрах каскада(config.py) указана необходимости его отрисовки(boolean переменная draw=True).

Как установить

    git clone https://github.com/nicko858/everything-recognition
    cd everything-recognition
    python3 -m venv venv
    . venv/bin/activate
    pip install -r requirements.txt

Как настроить

В конфигируционном файле config.py для любого из распознаваемых объектов можно задать цвет выделения и возможность отрисовки. Помимо представленных образов, можно добавить дополнительный. Например мы хотим, чтобы программа распознала Российский номерной знак. В файле config.py, в словарь CASCADES, необходимо добавить следующую запись:

    CASCADES = {
    .....
    "Russian plate number": {
        "path": "haarcascades/faces/haarcascade_russian_plate_number.xml",
        "color": (255, 0, 0),
        "draw": True
    },

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

Как запустить

    python run.py