Проект представляет собой программу для захвата видео с устройства и распознавания образов.
Под капотом используется библиотека opencv.
Образы распознаются методом каскад хаара (Haar Cascade) по предварительно обученной модели haarcascades
.
Программа состоит из 2 скриптов и директории с моделью(haarcascades
):
Скрипт с параметрами каскада. Под каскадом здесь подразумевается распознаваемый объект. Здесь указывается путь к xml-файлу каскада, цвет и необходимость его отрисовки.
Распознаются следующие объекты:
Face front
- лицо в анфасFace profile
- лицо в профильSmile
- улыбкаEyes
- глазаFull body
- тело в полный ростCat face
- кошачья мордочка
Основной функционал реализован здесь. После запуска скрипта выполняется захват видео с устройства видеозаписи(веб-камера) и опознанные объекты выделяются цветными прямоугольниками. Если на компьютере отсутствует камера, то программа сообщит об этом пользователю и завершит работу.
Программа будет работать до тех пор, пока пользователь не пошлет сигнал завершения работы 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