antigluk 07.08.2010 15:50

Я рекомендуюOpenCV Facerecog - Распознование лиц

Привет, вилинуксоид.
Facerecog - это такая программка, которая может распознать человека на фотографиях.


Без разговоров - вот:
1
2
3
4
5
$ ./opencv-facerecog file.jpg
Vasya
$ ./opencv-facerecog file.jpg
Petya
Roma



То есть: скармливаете ему фотографию, а она говорит кто на ней изображен. Даже несколько человек может распознать!

Установка:
1) скачиваете opencv-facerecog.tar.gz
2) Распаковываете
3) Запускаете в этой распакованной папке $ make
4) Готово. В этой папке появился бинарик "opencv-facerecog"

Перед тем как он будет угадывать ваше лицо, его, конечно-же, нужно обучить.
Для этого нам потребуются такие скрипты:

facerecog - Поместите его в свою исполняемую папку (у меня это ~/bin). Путь /home/roma/bin/opencv-facerecog замените на тот, в который вы распаковали архив.
1
2
3
#!/bin/bash
cd /home/roma/bin/opencv-facerecog
./opencv-facerecog "$@"



photograph.sh - просто фотографирует человека веб-камерой и складывает фотки по пути $1, обзывая их текущей датой-временем.
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash

if < -z "`grep "open" /proc/acpi/button/lid/LID0/state`" >; then
exit 0
fi

< -z "$1" > && MYPATH=`pwd` || MYPATH="$1"
mkdir -p /tmp/photograph/
cd /tmp/photograph/
mplayer -frames 3 -vo jpeg tv:///dev/video0 >/dev/null 2>&1
FileName="$MYPATH/`date '+%d.%m.%y %T'`.jpg"
cp 00000003.jpg "$FileName"
rm *
cd $MYPATH
echo "$FileName"



facerecog_teach.sh - скрипт для обучения распознавалки с помощью веб-камеры.
$1 - идентификатор человека (слово). Скрипт складывает "слепки" в папку ~/.opencv-facerecog/faces/<Кодовое имя>/
$2 - если указать "nomakedb", то скрипт не будет каждый раз при обучении новой фотографии вносить её в базу данных.
1
2
3
4
5
#!/bin/bash
mkdir -p /tmp/facerecog_tmp/
FN="`photograph.sh /tmp/facerecog_tmp/`"
facerecog -a $1 "$FN"
< ! "$2" == "nomakedb" > && facerecog -b



facerecog_cam.sh - скрипт, который делает снимок веб-камерой и передает его на распознавание к facerecog.
1
2
3
4
5
#!/bin/bash

mkdir -p /tmp/facerecog_tmp/
FN="`photograph.sh /tmp/facerecog_tmp/`"
facerecog "$FN"



После обучения желательно сделать
1
$ facerecog -b


Чтобы добавить обученные снимки в базу. (-b - создает базу данных заново)

После создания скриптов, сядьте поудобнее перед камерой и позапускайте несколько раз
$ facerecog_teach.sh YourName
Далее попробуйте запустить facerecog_cam, и вы должны увидеть своё имя YourName ^_^


Между прочим, процент угадывания около 95 процентов при разном освещении и повороте головы. (на глаз при обучении на 10-15 фотографий).

Фотографии перед катом - примеры "слепков" из моей папки ~/.opencv-facerecog/faces/Roma/, только там они в формате PGM


Тэги: opencv opencv-facerecog
+ 9 -
Похожие Поделиться

helvete 07.08.2010 17:23 #
Было бы неплохо сделать распознавание фотографии при входе в систему
antigluk 07.08.2010 17:25 #
Я сейчас думаю написать pam-модуль для этой програмки.
Вообще то есть такая штука как http://code.google.com/p/pam-face-authentication/
Но работает она ужасно.
Alx 08.08.2010 12:17 #
Было бы очень неплохо =) Если напишите, то расскажите об этом здесь?
antigluk 08.08.2010 12:35 #
Обязательно =)
solomenikm 08.08.2010 02:59 #
Неплохо было бы сделать с такой штукой каталогизатор фото, т.к. Picasa не есть тру, а F-Spot вообще У.Г.
Подскажите чего не хватает , каких библиотек (файлов)

make
g++ -O3 -Wall -funroll-loops `pkg-config --cflags opencv` -c opencv-facerecog.cpp `pkg-config --libs opencv` -lm -lboost_filesystem -lboost_system
Package opencv was not found in the pkg-config search path.
Perhaps you should add the directory containing `opencv.pc'
to the PKG_CONFIG_PATH environment variable
No package 'opencv' found
Package opencv was not found in the pkg-config search path.
Perhaps you should add the directory containing `opencv.pc'
to the PKG_CONFIG_PATH environment variable
No package 'opencv' found
opencv-facerecog.cpp:31:16: fatal error: cv.h: Нет такого файла или каталога
#include "cv.h"
^
compilation terminated.
make: *** [opencv-facerecog.o] Ошибка 1

dront78 06.01.2015 10:56 #
No package 'opencv' found
А сейчас что ему нужно:

make
g++ -O3 -Wall -funroll-loops `pkg-config --cflags opencv` -c opencv-facerecog.cpp `pkg-config --libs opencv` -lm -lboost_filesystem -lboost_system
opencv-facerecog.cpp:44:53: fatal error: boost/date_time/posix_time/posix_time.hpp: Нет такого файла или каталога
#include
dront78 08.01.2015 11:36 #
жжете
fatal error: boost
Поджигаю...
Пакета boot у меня нету, есть куча пакетов libboost-чето-там...

P.S. система Lubuntu 14.04
dront78 09.01.2015 12:23 #
ну и ставьте все