Библиотека Python для обнаружения и извлечения лиц с помощью OpenCV с использованием HOG/нейронных сетей

Многие люди используют комбинации библиотек для работы с изображениями, например: OpenCV, DlibPillow и другие. Но это очень запутанный и проблемный процесс. Например, установка Dlib может быть чрезвычайно сложной и разочаровывающей.

Эта Pythonбиблиотека использует OpenCV для обнаружения, выравнивания и извлечения изображений лиц в целях классификации, используя  HOG  или  нейронные сети.

OpenCV более чем способен делать все, что необходимо в области обработки изображений, например: обнаруживать лицавыравнивать и извлекать лица, создавая так называемые «Face Chips».

Установка

Клонируйте репозиторийЕсли у вас установлена Anaconda, тогда вы можете просто создать среду с прикрепленным файлом:

conda env create -f newHogEnv.yml

Для тестирования просто запустите программу pythonfaces.py:

python pythonfaces.py |image.jpg|

У него есть два других аргумента:

python pythonfaces.py |image.jpg| |face cascade model| |eye cascade model|

А если вы введете только имя файла изображения, то программа будет использовать файлы, находящиеся в папке «./data/haarcascades».

Эта программа обнаруживает лица на переданном изображении, извлекая каждое из них в новое изображение. Затем происходит преобразование в монохромный режим, выравнивание лица (выравнивает глаза по горизонтали) и вырезает лицо человека в квадратную форму нужного вам размера.

Используем pythonfaces как библиотеку

В этом модуле есть несколько полезных функций, и вы можете импортировать его следующим образом:

import pythonfaces

detectfaces

Эта функция получает изображение OpenCV (это может быть видеокадр), затем обнаруживает лица в нем и возвращает список с изображениями. Первое — это оригинальное помеченное изображение (где находятся лица и глаза), а остальные — обрезанные изображения каждого найденного лица (Face Chips), правильно выровненные и масштабированные.

Вы можете сохранить изображения прописав:

cv2.imwrite(|path of the file to be written|, |OpenCV image object|)

Параметры:

  1. img: изображение OpenCV;
  2. img_h, img_w: размер «квадрата» каждого «Chip Face», который будет сгенерирован;
  3. face_cascade_file: каскад модели Хаара для обнаружения лица — включен в «/data/haarcascades»;
  4. eye_cascade_file: каскадная модель Хаара для обнаружения глаз — включена в «/data/haarcascades»;

Эти модели взяты из оригинального проекта OpenCV на Github. Смотрите код файла pythonfaces.py, если хотите рассмотреть другие методы.