C_3AXAPOB

<<< Back

Детектор лиц на PHP без использования OpenCV

Эксперимент

Дислеймер: это эксперимент!

Использованы материалы:
https://github.com/felixkoch/PHP-FaceDetector
https://www.ab-log.ru/smart-house/video_camera_security/face-detection

Для определния лица используется метод Виолы—Джонса (англ. Viola–Jones object detection) — алгоритм, позволяющий обнаруживать объекты на изображениях в реальном времени. Подробней тут https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%92%D0%B8%D0%BE%D0%BB%D1%8B_%E2%80%94_%D0%94%D0%B6%D0%BE%D0%BD%D1%81%D0%B0 я так понял, что этот же метод использует OpenCV и файл haarcascade_frontalface_default.xml (о котором ниже) оттуда.

Сразу замечу, что метод не 100 процентный и работает по моим наблюдениям в ~80 процентах случаев.
У меня был случай когда за лицо был принят элемент обстановки.
Алгоритм может определять несколько лиц на снимке.

Нам понадобятся два файла:
FaceDetector.php - библиотека
haarcascade_frontalface_default.xml
скачать их можно тут: https://github.com/felixkoch/PHP-FaceDetector
поместить их надо в папку var/www/lib/

Так как я использую камеры подключенные через простые устройства то покажу на их примере. У меня камера привязана к датчику движения и при движении в комнате вызывается метод takeSnapshot.

Есть камера в простых устройствах -объект Camera01 у объекта есть метод takeSnapshot.
В методе takeSnapshot пишем

include("FaceDetector.php");
$dir='http://192.168.2.13/cms/images/'; //тут соответственно под себя переписываем
$snap=$dir.gg('Camera01.snapshot');
$detector = new FaceDetector();
$detector->scan($snap);
$faces = $detector->getFaces();
if(count($faces) > 0) {
say("Вижу лицо!",2); //count($faces) говорит о том сколько лиц на фото определено. Таким образом, можно определить сколько человек в комнате.
} else {
//say("Нет лиц!",2);
}

Далее лицо можно идентифицировать-распознать используя библиотеку FANN о том как это сделать написано тут https://www.ab-log.ru/smart-house/video_camera_security/face-detection
О том как установть FANN смотрите в моей предыдущей теме.

Discuss (0) (3)

Санкт-Петербург, Россия