目次
プロセス
インターフェース
実装の詳細
中国語の使用
テキストの中央揃えと背景の設定
ボタン ページ ジャンプ
トレーニング パート
train.php" >train.php
ディレクトリの検索" >ディレクトリの検索
テスト部分
test.php 部分
recognition.php セクション

テスト部分

Jun 13, 2016 pm 12:22 PM
file gt name quot

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 つのパートが含まれます:

  • startTrain.php はトレーニングディレクトリに入るために使用され、
  • train.php はトレーニングデータをサーバーに転送し、トレーニング成功フラグを出力するために使用されます

startTrain.php

この部分は、php の選択フォルダーを確認しましたが、方法が見つかりませんでした。そのため、 を使用してディレクトリに入りました。 テスト部分

は、フォームを送信した後、実際のトレーニングのために train.php にジャンプします。

ログイン後にコピー





train.php

この部分は 2 つの関数を実装します:

  • 入力ディレクトリに従ってすべてのトレーニング画像を検索します。そして、すべての画像パスを記録します
  • すべてのトレーニング画像から顔を 1 つずつ検出し、トレーニング モデルに顔を追加します


ディレクトリの検索

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 つの部分:

  • test.php はテスト画像の選択を担当します
  • recognition.php はテスト画像を

test.php 部分

は次のように表示されます。

ファイル選択部分は とすると、フォームが認識.php に送信されます。




recognition.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" => "小王");
ログイン後にコピー







$img_url = array();$person_name = array();$trainDir = $_GET["trainDir"];listDir($trainDir, $person_name, $img_url);echo "从目录中我们得到了 ".sizeof($img_url)." 张图片".<br>;


版权声明:本文为博主原创文章,未经博主允许不得转载。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Huawei GT3 ProとGT4の違いは何ですか? Huawei GT3 ProとGT4の違いは何ですか? Dec 29, 2023 pm 02:27 PM

多くのユーザーはスマートウォッチを選ぶときにファーウェイブランドを選択しますが、その中でもファーウェイ GT3pro と GT4 は非常に人気のある選択肢であり、多くのユーザーはファーウェイ GT3pro と GT4 の違いに興味を持っています。 Huawei GT3pro と GT4 の違いは何ですか? 1. 外観 GT4: 46mm と 41mm、材質はガラスミラー + ステンレススチールボディ + 高解像度ファイバーバックシェルです。 GT3pro: 46.6mm および 42.9mm、材質はサファイアガラス + チタンボディ/セラミックボディ + セラミックバックシェルです。 2. 健全な GT4: 最新の Huawei Truseen5.5+ アルゴリズムを使用すると、結果はより正確になります。 GT3pro: ECG 心電図と血管と安全性を追加

JavaのFile.length()関数を使用してファイルのサイズを取得します。 JavaのFile.length()関数を使用してファイルのサイズを取得します。 Jul 24, 2023 am 08:36 AM

ファイルのサイズを取得するには、Java の File.length() 関数を使用します。ファイル操作を扱うとき、ファイル サイズは非常に一般的な要件です。Java では、ファイルのサイズを取得するための非常に便利な方法、つまり length( ) File クラスのメソッド。この記事では、このメソッドを使用してファイルのサイズを取得する方法と、対応するコード例を紹介します。まず、サイズを取得したいファイルを表す File オブジェクトを作成する必要があります。 File オブジェクトを作成する方法は次のとおりです: Filef

紅夢ネイティブアプリケーションのランダムな詩 紅夢ネイティブアプリケーションのランダムな詩 Feb 19, 2024 pm 01:36 PM

オープン ソースの詳細については、次のサイトを参照してください。 51CTO Honmeng 開発者コミュニティ https://ost.51cto.com 実行環境 DAYU200:4.0.10.16SDK: 4.0.10.15IDE: 4.0.600 1. アプリケーションを作成するには、[ファイル] をクリックします。 >新しいファイル ->プロジェクトの作成。テンプレートを選択します: [OpenHarmony] EmptyAbility: プロジェクト名 shici、アプリケーション パッケージ名 com.nut.shici、およびアプリケーションの保存場所 XXX (中国語、特殊文字、スペースは含まれません) を入力します。 CompileSDK10、モデル: ステージ。デバイス

PHP BLOBをファイルに変換する方法 PHP BLOBをファイルに変換する方法 Mar 16, 2023 am 10:47 AM

PHP BLOB をファイルに変換する方法: 1. PHP サンプル ファイルを作成します; 2. 「function blobToFile(blob) {return new File([blob], 'screenshot.png', { type: 'image/jpeg' })」を通じて} 」メソッドを使用して、Blob をファイルに変換できます。

JavaのFile.renameTo()関数を使用してファイルの名前を変更する JavaのFile.renameTo()関数を使用してファイルの名前を変更する Jul 25, 2023 pm 03:45 PM

Java の File.renameTo() 関数を使用してファイルの名前を変更する Java プログラミングでは、ファイルの名前を変更する必要がよくあります。 Java には、ファイル操作を処理するための File クラスが用意されており、その renameTo() 関数でファイルの名前を簡単に変更できます。この記事では、Java の File.renameTo() 関数を使用してファイルの名前を変更する方法と、対応するコード例を紹介します。 File.renameTo() 関数は、File クラスのメソッドです。

修正: Windows 11 で Snipping ツールが機能しない 修正: Windows 11 で Snipping ツールが機能しない Aug 24, 2023 am 09:48 AM

Windows 11 で Snipping Tool が機能しない理由 問題の根本原因を理解すると、適切な解決策を見つけるのに役立ちます。 Snipping Tool が正しく動作しない主な理由は次のとおりです。 フォーカス アシスタントがオンになっている: これにより、Snipping Tool が開かなくなります。破損したアプリケーション: 起動時にスニッピング ツールがクラッシュする場合は、破損している可能性があります。古いグラフィック ドライバー: 互換性のないドライバーは、スニッピング ツールに干渉する可能性があります。他のアプリケーションからの干渉: 実行中の他のアプリケーションが Snipping Tool と競合する可能性があります。証明書の有効期限が切れています: アップグレード プロセス中のエラーにより、この問題が発生する可能性があります。これらの簡単な解決策は、ほとんどのユーザーに適しており、特別な技術知識は必要ありません。 1. Windows および Microsoft Store アプリを更新する

JavaのFile.getParent()関数を使用してファイルの親パスを取得します。 JavaのFile.getParent()関数を使用してファイルの親パスを取得します。 Jul 24, 2023 pm 01:40 PM

ファイルの親パスを取得するには、Java の File.getParent() 関数を使用します Java プログラミングでは、ファイルやフォルダーを操作する必要がよくあります。場合によっては、ファイルの親パス、つまりファイルが存在するフォルダーのパスを取得する必要があることがあります。 Java の File クラスには、ファイルまたはフォルダーの親パスを取得する getParent() メソッドが用意されています。 File クラスは、ファイルとフォルダーを Java で抽象表現したもので、ファイルとフォルダーを操作するための一連のメソッドを提供します。その中で、手に入れてください

JavaのFile.getParentFile()関数を使用してファイルの親ディレクトリを取得します。 JavaのFile.getParentFile()関数を使用してファイルの親ディレクトリを取得します。 Jul 27, 2023 am 11:45 AM

ファイルの親ディレクトリを取得するには、Java の File.getParentFile() 関数を使用します Java プログラミングでは、ファイルやフォルダーを操作する必要がよくあります。ファイルの親ディレクトリを取得する必要がある場合は、Java が提供する File.getParentFile() 関数を使用できます。この記事では、この関数の使用方法とコード例を説明します。 Java の File クラスは、ファイルやフォルダーを操作するために使用される主なクラスです。ファイルのプロパティを取得および操作するための多くのメソッドを提供します

See all articles