#PHPで顔認識したい
PHPで顔認識するという若干ニッチな要望が某案件であったりします。
こんなのがあるのでこれをインストールしに行きます。
##OpenCVのインストール
facedetectをインストールするにあたってOpenCVが必要になります。
yumでもあったりはするんですがバージョンが古くてfacedetectをインストールできません。
なので仕方なくソースからインストール・・・。
これの通りやれば行けなくはないんですが、groupinstallが邪魔・・・。
[root@localhost source]# wget http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.4.11/opencv-2.4.11.zip
[root@localhost source]# unzip opencv-2.4.11.zip
[root@localhost source]# cd opencv-2.4.11
*cmakeが必要なのでない場合はyumからインストール
[root@localhost opencv-2.4.11]# cmake .
# こける
cmakeで失敗します
必要なパッケージをインストール
[root@localhost opencv-2.4.11]# yum install gtk2-devel
#groupinstallから必要なパッケージを探したらこれだけだった・・・
[root@localhost opencv-2.4.11]# yum install gcc-c++
さーコンパイルのお時間でございます
[root@localhost opencv-2.4.11]# cmake .
# OK
[root@localhost opencv-2.4.11]# make
# OK
[root@localhost opencv-2.4.11]# make install
#OK !
でけた!
##facedetectのインストール
facedetectも実はepelにパッケージがあったりするんですがPHPのバージョン縛りがやたら厳しいので入れるのは難しい可能性ががが・・・。
(私が試したときはremiのPHPバージョン5.5.22、epelにあるfacedetectの必要バージョン5.5.21・・・。)
ということでしゃーないので公式のとおりソースから
[root@localhost source]# wget https://github.com/infusion/PHP-Facedetect/archive/master.zip
[root@localhost source]# unzip master.zip
[root@localhost source]# cd PHP-Facedetect-master/
[root@localhost PHP-Facedetect-master]# phpize && ./configure && make && make install
[root@localhost PHP-Facedetect-master]# vi /etc/php.d/facedetect.ini
[root@localhost PHP-Facedetect-master]# cat /etc/php.d/facedetect.ini
extension=facedetect.so
#でけた
##動かしてみる
<?php
//haarcascade_frontalface_alt2.xmlはopencvのソース/data/haarcascades/内のファイルを持ってきています
$fDtc = face_detect('test.jpg','haarcascade_frontalface_alt2.xml');
//顔認識したものをベースに抽出
foreach ($fDtc as $i => $fDtcv){
$im = new Imagick('test.jpg');
$im_width = $im->getImageWidth();
$im_height = $im->getImageHeight();
//右と下のカット
$im->chopImage($im_width,$im_height,$fDtcv['w'] + $fDtcv['x'],$fDtcv['h'] + $fDtcv['y']);
//左上のカット
$im->chopImage($fDtcv['x'],$fDtcv['y'],0,0);
//画像の書き出し
$im->writeImage('test2.jpg');
$im->destroy();
}
- これが・・・
- こんな感じ!