测试部分
php使用face++实现一个简单的人脸识别系统
流程
流程可以分为两部分,一部分是训练,一部分是测试。
关于如何使用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最前面加了个style,设置body的显示效果。
文字显示设置为居中,使用height,width加上margin-top,margin-left便可以设置body部分在页面中显示的地方啦。
背景则设置了图片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里面用location记录将要跳转的界面。
<input type="button" value="点击进入测试" onclick="location='test.php' ">
训练部分
包括两部分:
- startTrain.php用于输入训练目录,
- train.php用于将训练数据传到服务器,并将训练成功标记输出
startTrain.php
这一部分做得蛮挫的,查了下php选择文件夹,没有找到该怎么做,所以就用了个来输入目录。真是弱爆了啊
用了一个表单form来记录输入目录,提交表单之后则跳到train.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中‘.’的前面部分,如果是strstr($file,'.',false)则是'.'的后面部分。
动态数组的添加使用array_push就ok啦!
哦,不要忘记了关闭资源啊!有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>;
$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 = $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部分
显示如下:
选择文件部分用的是来做的,之后表单提交到recognition.php就好了。
recognition.php部分
首先得到图片的url。
$img_url = $_GET["testImgPath"];
$response = $facepp->execute('/recognition/identify', array('group_name' => 'oldpeople_qiaoxi', 'img' => $img_url));
$person_name = array("ami" => "艾米", "dongjian" => "张东健", "xiaowang" => "小王");

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

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

許多用戶在選擇智慧型手錶的時候都會選擇的華為的品牌,其中華為GT3pro和GT4都是非常熱門的選擇,不少用戶都很好奇華為GT3pro和GT4有什麼區別,下面就給大家介紹一下二者。華為GT3pro和GT4有什麼差別一、外觀GT4:46mm和41mm,材質是玻璃鏡板+不鏽鋼機身+高分纖維後殼。 GT3pro:46.6mm和42.9mm,材質是藍寶石玻璃鏡+鈦金屬機身/陶瓷機身+陶瓷後殼二、健康GT4:採用最新的華為Truseen5.5+演算法,結果會更加的精準。 GT3pro:多了ECG心電圖和血管及安

php blob轉file的方法:1.建立一個php範例檔;2、透過「function blobToFile(blob) {return new File([blob], 'screenshot.png', { type: 'image/jpeg' })} 」方法實作Blob轉File即可。

使用Java的File.length()函數取得檔案的大小檔案大小是在處理檔案作業時很常見的一個需求,Java提供了一個很方便的方法來取得檔案的大小,即使用File類別的length()方法。本文將介紹如何使用此方法來取得檔案的大小,並給出對應的程式碼範例。首先,我們需要建立一個File物件來表示我們想要取得大小的檔案。以下是建立File物件的方法:Filef

想了解更多關於開源的內容,請造訪:51CTO鴻蒙開發者社群https://ost.51cto.com運行環境DAYU200:4.0.10.16SDK:4.0.10.15IDE:4.0.600一、建立應用程式點擊File- >newFile->CreateProgect。選擇模版:【OpenHarmony】EmptyAbility:填寫項目名,shici,應用包名com.nut.shici,應用儲存位置XXX(不要有中文,特殊字符,空格)。 CompileSDK10,Model:Stage。 Device

使用Java的File.renameTo()函數重命名檔案在Java程式設計中,我們經常需要對檔案進行重命名的操作。 Java提供了File類別來處理檔案操作,其中的renameTo()函數可以方便地重新命名檔案。本文將介紹如何使用Java的File.renameTo()函數來重新命名文件,並提供對應的程式碼範例。 File.renameTo()函數是File類別的一個方法,

為什麼截圖工具在Windows11上不起作用了解問題的根本原因有助於找到正確的解決方案。以下是截圖工具可能無法正常工作的主要原因:對焦助手已開啟:這可以防止截圖工具開啟。應用程式損壞:如果截圖工具在啟動時崩潰,則可能已損壞。過時的圖形驅動程式:不相容的驅動程式可能會幹擾截圖工具。來自其他應用程式的干擾:其他正在運行的應用程式可能與截圖工具衝突。憑證已過期:升級過程中的錯誤可能會導致此issu簡單的解決方案這些適合大多數用戶,不需要任何特殊的技術知識。 1.更新視窗與Microsoft應用程式商店應用程

使用java的File.getParent()函數取得檔案的父路徑在Java程式設計中,我們經常需要操作檔案和資料夾。有時候,我們需要取得一個檔案的父路徑,也就是該檔案所在資料夾的路徑。 Java的File類別提供了getParent()方法用來取得檔案或資料夾的父路徑。 File類別是Java對檔案和資料夾的抽象表示,它提供了一系列操作檔案和資料夾的方法。其中,get

使用java的File.getParentFile()函數取得檔案的父目錄在Java程式設計中,我們經常需要操作檔案和資料夾。當我們需要取得檔案的父目錄時,可以使用Java提供的File.getParentFile()函數來完成。本文將介紹如何使用這個函數並提供程式碼範例。 Java中的File類別是用於操作檔案和資料夾的主要類別。它提供了許多方法來取得和操作文件的屬性
