微信日誌開發之人臉識別開發

這節咱們將簡單介紹在微信日誌中如何實現人臉識別功能php

人臉識別咱們將會使用Face++提供的api。api

須要使用的id以及AppKey請到官網首頁註冊獲取。服務器

(一)實現步驟微信

1.將用戶發送信息獲取並提交到服務器函數

2.服務器端處理信息並返回處理結果post

3.將信息返還給用戶ui

(二)實現代碼this

1.信息提取url

在微信日誌的主函數中咱們有用戶輸入信息獲取的函數,人臉識別的相關信息也能夠在其中實現spa

public function __construct() {
        global $wpdb; if(isset($_GET['echostr'])) $this->valid();//第一次驗證 $postStr = (isset($GLOBALS["HTTP_RAW_POST_DATA"]))?$GLOBALS["HTTP_RAW_POST_DATA"]:''; if($_POST["test"]){ $postStr = @$_POST["HTTP_RAW_POST_DATA"]; } //$xml = file_get_contents('php://input'); //$postStr = unicode_encode($postStr); $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $RX_TYPE = trim($postObj->MsgType); if($RX_TYPE == 'image')//該處爲咱們人臉識別函數的添加部分 { $wpdb->postStr = $postStr; $wpdb->postArray = wxlog_xml_to_array($postStr); $this->wxlog_log_id = $this->insert_wxlog_log($wpdb->postArray,$wpdb->postStr); $result = $this->receiveImage($postObj); exit($result); }

 

2.信息提交到服務器並處理

    $faceObj = new FacePlusPlus();
    $detect = $faceObj->face_detect($url); $numbers = isset($detect->face)? count($detect->face):0; if($numbers == 1) { } if (($detect->face[0]->attribute->gender->value != $detect->face[1]->attribute->gender->value) && $numbers == 2){ $compare = $faceObj->recognition_compare($detect->face[0]->face_id,$detect->face[1]->face_id); $result = getCoupleComment($compare->component_similarity->eye, $compare->component_similarity->mouth, $compare->component_similarity->nose, $compare->component_similarity->eyebrow, $compare->similarity); return $result; } else{ return "請發送一男一女的圖片"; }

該過程當中須要使用到face++的相關api(具體使用方法請參考官網或私信聯繫)

    //人臉檢測
    public function face_detect($urls = null)
    {
        return $this->call("detection/detect", array("url"=>$urls)); } //人臉比較 public function recognition_compare($face_id1, $face_id2) { return $this->call("recognition/compare", array("face_id1"=>$face_id1, "face_id2"=>$face_id2)); }

(三)信息返回給用戶

因爲咱們使用了微信日誌做爲平臺,因此輸出函數咱們也不用寫,直接使用微信日誌的相關函數就能夠

若是但願本身完成也很簡單

    private function receiveImage($object)
    {
        require_once('faceplusplus.php'); $content = getImageInfo((string)$object->PicUrl); $result = $this->transmitText($object, $content); return $result; } private function transmitText($object, $content) { $textTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>"; $result = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content); return $result; }

經過以上相關函數就能夠完成函數的返回。

(四)實現效果

 

 

你們能夠經過掃描一下二維碼體驗上述效果,若是對於實現方法有什麼不清楚的地方請加微信(dinghinh154)討論。

相關文章
相關標籤/搜索