オプション番号1
優れた顔検出ソリューション-PHPのFaceDetectorはOpenCVを使用します。 FaceDetectorは、さまざまな肌のトーン、低品質の写真、多数の顔、眼鏡をかけた人でも安定して動作します。
作業アルゴリズム
ここでの顔認識は、Viola-Jonesメソッド、Haarカスケード(長方形プリミティブ)、およびAdaBoost学習アルゴリズムに基づいています。 プリミティブ-サイズの異なる白と黒の長方形-が画像に重ねられ、その後、画像との畳み込みが読み取られます。 Haarカスケードの使用に関する詳細については、 こちらとこちらをご覧ください 。
FaceDetectorをインストールする
まず、パッケージをインストールする必要があります。
sudo apt-get install pkg-config python libjpeg62-dev libpng12-dev libtiff4-dev php-pear
OpenCVをインストールします。
sudo apt-get install libopencv-dev
インストールライブラリ:
pecl install facedetect
php.iniに以下があることを確認してください:
extension=facedetect.so
申込み
FaceDetectorには2つの主要な関数があります: face_countとface_detectは、それぞれ顔を数えて決定します。 haarcascade_frontalface_alt.xmlファイルは 、 / usr / share / opencv / haarcascades / haarcascade_frontalface_alt.xmlからプロジェクトフォルダーに移動する必要があります。
コード例-ピンクの正方形で面を円で囲みます:
<?php function LoadJpeg($imgname) { $im = @imagecreatefromjpeg($imgname); if (!$im) { $im = imagecreate(150, 30); $bgc = imagecolorallocate($im, 255, 255, 255); $tc = imagecolorallocate($im, 0, 0, 0); imagefilledrectangle($im, 0, 0, 150, 30, $bgc); imagestring($im, 1, 5, 5, "Error loading $imgname", $tc); } return $im; } $total= face_count($_GET['file'],'haarcascade_frontalface_alt.xml'); $ord= face_detect($_GET['file'],'haarcascade_frontalface_alt.xml'); $im = LoadJpeg($_GET['file']); $pink = imagecolorallocate($im, 255, 105, 180); if(count($ord) > 0) { foreach ($ord as $arr) { imagerectangle($im,$arr['x'] ,$arr['y'] , $arr['x']+$arr['w'], $arr['y']+$arr['h'], $pink); } } header('Content-Type: image/jpeg'); imagejpeg($im); imagedestroy($im); ?>
オプション番号2
OpenCVを使用しないオプション。 PHP FaceDetectionライブラリは、写真で1つの顔のみを検出します。 使用するには、 PHPスクリプトをダウンロードしてコードに貼り付ける必要があります。
コードの使用例-1つの面を緑の四角で囲みます:
<?php include "FaceDetector.php"; $face_detect = new Face_Detector('detection.dat'); $face_detect->face_detect('sample.jpg'); $face_detect->toJpeg(); $json = $face_detect->toJson(); $array = $face_detect->getFace(); ?>
顔を見つけて、 cropFace()関数を使用してすぐにカットできます:
<?php include "FaceDetector.php"; $face_detect = new Face_Detector('detection.dat'); $face_detect->face_detect('sample.jpg'); $face_detect->cropFace(); ?>
オプション番号3
OpenCVに基づく別のライブラリ 。 顔を検出するためのPythonスクリプト。
まず、必要なすべてのパッケージ(Python、Python OpenCV、OpenCVデータファイル)をダウンロードしてインストールする必要があります。
sudo apt-get install python python-opencv libopencv-dev
FaceDetectライブラリをインストールします。
sudo cp facedetect /usr/local/bin
写真に顔の存在を確認します。 人がいる場合は0を返し、ない場合は2を返します。
exec('./facedetect -q path/to/image.jpg'); echo exec('echo $?');
PHPでFaceDetectライブラリを使用する例:
// ob_start(); passthru('/usr/local/bin/facedetect path/to/image.jpg'); $data = ob_get_clean(); echo $data; // , test.jpg exec('/usr/local/bin/facedetect -o test.jpg path/to/image.jpg');
入り口には画像image.jpgがあり、出力には顔が正方形でハイライトされた画像test.jpgがあります。
この方法で顔を決定することができます 。 このアルゴリズムは、多くの顔の写真でも良好な結果を示します。 時にはそれは驚くべきものを与えますが。 たとえば、 ここで彼はサミュエルL.ジャクソンと2つの顔を識別しました。 そして、これはパメラ・アンダーソンの2つの顔です。
PS:そして、はい-関数はcatsを認識しません 。
アブストラクト
- PHPで顔を検出するための3つのライブラリ:OpenCVのPHPスクリプト、PHP FaceDetection、およびPython FaceDetectスクリプト。
- OpenCVのFaceDetectorライブラリは、Haarカスケードを使用します。
- PHP FaceDetectionは、写真で顔を1つだけ見つけることができます。
- こちらでpython-script FaceDetectの動作を試すことができます 。