ホームページ >バックエンド開発 >PHPチュートリアル >テスト部分
PHP は顔を使用して単純な顔認識システムを実装します
プロセスは 2 つの部分に分けることができ、1 つはトレーニング、もう 1 つはテストです。
face++ が提供する API の使用方法については、http://blog.csdn.net/jianjian1992/article/details/46640483 を参照してください。
コードは http にあります。 ://download.csdn.net /detail/jianjian1992/8866839無料ダウンロード。
以下に示すように、初めて使用するため、使用方法が紹介されます。はい、多くのことがあまり明確ではありません。そのため、インターフェイスは使いやすさを第一の目標として比較的シンプルに作られています。
index.html はウェルカムインターフェイスです。いくつかの小さな問題を記録します
head部分に文字セットを追加してutf-8を使うだけです!
<meta http-equiv="Content-Type" content="text/html; charset = utf-8">
HTML の先頭にスタイルを追加して、本文の表示効果を設定します。
テキストの表示を中央に設定します。高さ、幅、マージン上、マージン左を使用して、ページ上で本文部分を表示する位置を設定します。
背景は画像URLで設定され中央に表示されます。
<style>body{ text-align:left; height:500px; width:600px; top:50%; margin-top:130px; margin-left:550px; background-image:url(./imgs/back.jpg); background-position:center; background-repeat:repeat-y;}</style>
onClick は、ジャンプするインターフェイスを記録するために位置を使用します。
<input type="button" value="点击进入测试" onclick="location='test.php' ">
には、2 つのパートが含まれます:
この部分は、php の選択フォルダーを確認しましたが、方法が見つかりませんでした。そのため、 を使用してディレクトリに入りました。
は、フォームを送信した後、実際のトレーニングのために train.php にジャンプします。
php でディレクトリ内のすべてのファイルを検索するのに非常に便利です。 listDir 関数は dir.php にあります。
この関数は、$dir ディレクトリ名に基づいて取得したすべてのファイル名を $names に格納し、すべてのファイル パス名を $img_urls に格納します。
注意すべき点は、中国語のファイル名である場合、結果を取得するには
$file = iconv("gb2312","UTF-8",$file);を追加する必要があることです。追加しないと空になります
php で文字列を検索するには、strstr 関数を使用できます。
たとえば、次の $file_name = strstr($file,'.',true) は、'.' の前の部分を検索します。 $file.If strstr($file,'.',false) の場合は、'.' の後ろの部分です。
動的配列を追加するには、array_push を使用するだけです。
ああ、リソースを閉じるのを忘れないでください。 opendir($dir) がある場合は、対応する closedir($dir) が存在する必要があります。
function listDir($dir, &$names, &$img_urls){ if(is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { if((is_dir($dir."/".$file)) && $file!="." && $file!="..") { //echo "文件名:",$file,"
"; listDir($dir."/".$file."/"); } else { $file = iconv("gb2312","UTF-8",$file); if($file!="." && $file!="..") { //var_dump($file); $file_name = strstr($file, '.', true); //echo $file_name."
"; array_push($names, $file_name); array_push($img_urls, $dir."/".$file); } } } closedir($dh); } }}
train.php で次のコードを使用して、トレーニング用のすべての画像の URL を取得します。
$img_url = array();$person_name = array();$trainDir = $_GET["trainDir"];listDir($trainDir, $person_name, $img_url);echo "从目录中我们得到了 ".sizeof($img_url)." 张图片".<br>;次に、トレーニング グループ oldpeople_qiaoxi を作成します。
$response = $facepp->execute('/group/delete', array('group_name' => 'oldpeople_qiaoxi'));$response = $facepp->execute('/group/create', array('group_name' => 'oldpeople_qiaoxi'));次に、ループを作成して各写真の顔を検出します。
$params['img'] = $img;$params['attribute'] = 'gender,age,race,smiling,glass,pose';$response = $facepp->execute('/detection/detect',$params);戻り値 $response から face_id を取得した後、人物を作成し、検出された顔をこのカテゴリ person に追加します。
$response = $facepp->execute('/person/delete', array('person_name' => $person_name[$i],'group_name' => 'oldpeople_qiaoxi'));$response = $facepp->execute('/person/create', array('person_name' => $person_name[$i],'group_name' => 'oldpeople_qiaoxi'));$response = $facepp->execute('/person/add_face', array('person_name' => $person_name[$i], 'face_id' => $face_id, 'group_name' => 'oldpeople_qiaoxi'));すべての画像が処理されたら、モデルをトレーニングできます。
$response = $facepp->execute('/train/identify', array('group_name' => 'oldpeople_qiaoxi'));トレーニングが成功した場合、結果は次のようになります:
この部分には以下が含まれます2 つの部分:
は次のように表示されます。
ファイル選択部分は とすると、フォームが認識.php に送信されます。
まず画像の URL を取得します。
$img_url = $_GET["testImgPath"];次に、identify を実行して ID 結果を取得します。
$response = $facepp->execute('/recognition/identify', array('group_name' => 'oldpeople_qiaoxi', 'img' => $img_url));ここでは中国語の名前と英語の名前を対応させるために配列が使用されています。face++ は中国語の名前を持つ画像をサポートしていないため、渡される画像はすべて英語の名前になりますが、中国語の名前は必要です。表示されるので、ここでマッピングが行われます。
$person_name = array("ami" => "艾米", "dongjian" => "张东健", "xiaowang" => "小王");
版权声明:本文为博主原创文章,未经博主允许不得转载。