溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

微信公眾平臺(tái)消息接口開發(fā)圖片識(shí)別之如何實(shí)現(xiàn)人臉識(shí)別

發(fā)布時(shí)間:2021-09-10 11:52:05 來源:億速云 閱讀:178 作者:小新 欄目:移動(dòng)開發(fā)

這篇文章主要介紹微信公眾平臺(tái)消息接口開發(fā)圖片識(shí)別之如何實(shí)現(xiàn)人臉識(shí)別,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

一、前言

前幾個(gè)小應(yīng)用似乎不給力,反應(yīng)不冷不熱,似乎大家不感興趣,今天給大家推出一個(gè)亮眼一點(diǎn)的:微信公眾平臺(tái)上的人臉識(shí)別。

前段時(shí)間看到網(wǎng)上有個(gè)報(bào)道  四川大學(xué)計(jì)算機(jī)科學(xué)系主任、副教授 魏驍勇 開發(fā)了 基于圖像的課堂考勤系統(tǒng), 上課點(diǎn)名用人臉識(shí)別來‘刷臉’,看下圖

微信公眾平臺(tái)消息接口開發(fā)圖片識(shí)別之如何實(shí)現(xiàn)人臉識(shí)別

在點(diǎn)名時(shí),只需多角度對教室內(nèi)的學(xué)生分區(qū)域拍照,然后將照片上傳到服務(wù)器,自動(dòng)拼接成一張整圖,系統(tǒng)再對照片里的學(xué)生頭像自動(dòng)編號(hào)和識(shí)別,最后出現(xiàn)學(xué)生的個(gè)人信息,旁邊則有“It’sme(是我)”和“notme(不是我)”兩個(gè)選項(xiàng)。這樣馬上就能知道誰在上課、誰在逃課了

更神的是,這東西在統(tǒng)計(jì)學(xué)上的意義:它甚至可以分析出學(xué)生的人際關(guān)系甚至性格興趣,比如它根據(jù)學(xué)生在課堂上喜歡坐在哪些位置,喜歡坐在誰的旁邊,得出原始數(shù)據(jù),經(jīng)過一段時(shí)間之后,再來分析,就可以誰和誰在談戀愛,誰和誰分手后又和誰在一起了。誰老是喜歡自己一個(gè)人獨(dú)自坐在角落(自閉癥),某個(gè)男生和某個(gè)男生半年下來每次都坐在一起(基友???),瞬間感覺這玩意給人的想象空間無限大。。。。。。

下面開始言歸正傳了:

首先看一下什么是人臉識(shí)別,看一下百度百科的定義:人臉識(shí)別特指利用分析比較人臉視覺特征信息進(jìn)行身份鑒別的計(jì)算機(jī)技術(shù)。人臉識(shí)別是一項(xiàng)熱門的計(jì)算機(jī)技術(shù)研究領(lǐng)域,可以將人臉明暗偵測,自動(dòng)調(diào)整動(dòng)態(tài)曝光補(bǔ)償,人臉追蹤偵測,自動(dòng)調(diào)整影像放大;它屬于生物特征識(shí)別技術(shù),是對生物體(一般特指人)本身的生物特征來區(qū)分生物體個(gè)體。

人臉識(shí)別的技術(shù)過程(來自百度百科)

一般分三步:
(1)首先建立人臉的面像檔案。即用攝像機(jī)采集單位人員的人臉的面像文件或取他們的照片形成面像文件,并將這些面像文件生成面紋(Faceprint)編碼貯存起來。
(2)獲取當(dāng)前的人體面像。即用攝像機(jī)捕捉的當(dāng)前出入人員的面像,或取照片輸入,并將當(dāng)前的面像文件生成面紋編碼。
(3)用當(dāng)前的面紋編碼與檔案庫存的比對。即將當(dāng)前的面像的面紋編碼與檔案庫存中的面紋編碼進(jìn)行檢索比對。上述的“面紋編碼”方式是根據(jù)人臉臉部的本質(zhì)特征和開頭來工作的。這種面紋編碼可以抵抗光線、皮膚色調(diào)、面部毛發(fā)、發(fā)型、眼鏡、表情和姿態(tài)的變化,具有強(qiáng)大的可靠性,從而使它可以從百萬人中精確地辯認(rèn)出某個(gè)人。人臉的識(shí)別過程,利用普通的圖像處理設(shè)備就能自動(dòng)、連續(xù)、實(shí)時(shí)地完成。

二、在微信公眾平臺(tái)上做人臉識(shí)別

1. 圖片獲取

首先要獲得用戶發(fā)過來的圖片,微信公眾平臺(tái)支持接收圖片,

用戶發(fā)送的一個(gè)圖片如下:

微信公眾平臺(tái)消息接口開發(fā)圖片識(shí)別之如何實(shí)現(xiàn)人臉識(shí)別

其圖片消息的格式如下:

<xml>
    <ToUserName><![CDATA[gh_13d1a3a7x46a]]></ToUserName>
    <FromUserName><![CDATA[oKaHDjt60aAyPvQmUX3ddyix_zG8]]></FromUserName>
    <CreateTime>1357543196</CreateTime>
    <MsgType><![CDATA[image]]></MsgType>
    <PicUrl><![CDATA[http://www.php.cn/]]></PicUrl>
    <MsgId>5830603629728080261</MsgId></xml>

ToUserName 消息接收方微信號(hào),一般為公眾平臺(tái)賬號(hào)微信號(hào)
FromUserName 消息發(fā)送方微信號(hào)
CreateTime 消息創(chuàng)建時(shí)間
MsgType 消息類型;圖片消息為image
PicUrl 圖片鏈接地址
MsgId 消息ID號(hào)

2. 接口

Face++提供人臉識(shí)別接口,

檢測給定圖片(Image)中的所有人臉(Face)的位置和相應(yīng)的面部屬性接口地址如下:
http://apicn.faceplusplus.com/v2/detection/detect

參數(shù)

是否必須

含義

api_key

必須

App的Face++ API Key

api_secret

必須

APP的Face++ API Secret

url 或 img[POST]

必須

待檢測圖片的URL 或者 通過POST方法上傳的二進(jìn)制數(shù)據(jù),原始圖片大小需要小于3M

mode

可選

檢測模式可以是normal(默認(rèn)) 或者 oneface 。在oneface模式中,檢測器僅找出圖片中最大的一張臉。

attribute

可選

可以是none或者由逗號(hào)分割的屬性列表。默認(rèn)為gender, age, race, smiling。目前支持的屬性包括:gender, age, race, smiling, glass, pose

tag

可選

可以為圖片中檢測出的每一張F(tuán)ace指定一個(gè)不包含^@,&=*'"等非法字符且不超過255字節(jié)的字符串作為tag,tag信息可以通過 /info/get_face 查詢

async

可選

如果置為true,該API將會(huì)以異步方式被調(diào)用;也就是立即返回一個(gè)session id,稍后可通過/info/get_session查詢結(jié)果。默認(rèn)值為false。


返回如下

{
    "face": [
        {
            "attribute": {
                "age": {
                    "range": 5,
                    "value": 17
                },
                "gender": {
                    "confidence": 99.9781,
                    "value": "Female"
                },
                "glass": {
                    "confidence": 99.9815,
                    "value": "None"
                },
                "pose": {
                    "pitch_angle": {
                        "value": 0.000019753399999999996
                    },
                    "roll_angle": {
                        "value": 1.75177
                    },
                    "yaw_angle": {
                        "value": 4
                    }
                },
                "race": {
                    "confidence": 99.471,
                    "value": "Asian"
                },
                "smiling": {
                    "value": 87.1365
                }
            },
            "face_id": "c772b4b66c00d46b15344eff74b56e48"
        }
    ],
    "img_height": 293,
    "img_id": "3005132383841edd08c9b500fb1fe2c4",
    "img_width": 440,
    "session_id": "4e64c73fec19442cbefde3cf9bd6b53d",
    "url": ""
}

參數(shù):

gender

object

包含性別分析結(jié)果,value的值為Male/Female, confidence表示置信度

age

object

包含年齡分析結(jié)果,value的值為一個(gè)非負(fù)整數(shù)表示估計(jì)的年齡, range表示估計(jì)年齡的正負(fù)區(qū)間

race

object

包含人種分析結(jié)果,value的值為Asian/White/Black, confidence表示置信度

smiling

object

包含微笑程度分析結(jié)果,value的值為0-100的實(shí)數(shù),越大表示微笑程度越高

實(shí)現(xiàn)方法

取結(jié)果參數(shù)中的gender,age,race,smiling等參數(shù) ,如

"attribute": {
                "age": {
                    "range": 5,
                    "value": 17
                },
                "gender": {
                    "confidence": 99.9781,
                    "value": "Female"
                },
                "glass": {
                    "confidence": 99.9815,
                    "value": "None"
                },
                "pose": {
                    "pitch_angle": {
                        "value": 0.000019753399999999996
                    },
                    "roll_angle": {
                        "value": 1.75177
                    },
                    "yaw_angle": {
                        "value": 4
                    }
                },
                "race": {
                    "confidence": 99.471,
                    "value": "Asian"
                },
                "smiling": {
                    "value": 87.1365
                }

上述結(jié)果中,

年齡age為17,誤差在5歲
性別為female,表示女,置信度為99%
種族為亞洲Asian,
微笑度 87%

和圖片比較一下,還是比較一致的

微信公眾平臺(tái)消息接口開發(fā)圖片識(shí)別之如何實(shí)現(xiàn)人臉識(shí)別

3. 程序?qū)崿F(xiàn)

SDK如下:

"attribute": {
                "age": {
                    "range": 5,
                    "value": 17
                },
                "gender": {
                    "confidence": 99.9781,
                    "value": "Female"
                },
                "glass": {
                    "confidence": 99.9815,
                    "value": "None"
                },
                "pose": {
                    "pitch_angle": {
                        "value": 0.000019753399999999996
                    },
                    "roll_angle": {
                        "value": 1.75177
                    },
                    "yaw_angle": {
                        "value": 4
                    }
                },
                "race": {
                    "confidence": 99.471,
                    "value": "Asian"
                },
                "smiling": {
                    "value": 87.1365
                }

調(diào)用方式如下:

<?PHP
/**
* Face++ PHP SDK
* author: Tianye
* since:  2013-12-11
**/
class Facepp{
    ######################################################
    ### If you choose Amazon(US) server,please use the ###
    ### http://apius.faceplusplus.com/v2               ###
    ### or                                             ###
    ### https://apius.faceplusplus.com/v2              ###
    ######################################################
    var $server = 'http://apicn.faceplusplus.com/v2';
    #var $server = 'https://apicn.faceplusplus.com/v2';
    #var $server = 'http://apius.faceplusplus.com/v2';
    #var $server = 'https://apius.faceplusplus.com/v2';

    #############################################
    ### set your api key and api secret here. ###
    #############################################
    var $api_key = '{your API KEY}';
    var $api_secret = '{your API SECRET}';

    public function __construct($api_key=NULL, $api_secret=NULL, $server=NULL){
        if($api_key){
            $this->api_key = $api_key;
        }
        if($api_secret){
            $this->api_secret = $api_secret;
        }
        if($server){
            $this->server = $server;
        }
    }

    /**
    * @param $method : The Face++ API 
    * @param $params : Request Parameters
    * @return : Array {'http_code':'Http Status Code', 'request_url':'Http Request URL','body':' JSON Response'}
    **/
    public function execute($method,$params){
        if(empty($params)){
            $params=array();
        }
        $params['api_key'] = $this->api_key;
        $params['api_secret'] = $this->api_secret;

        return $this->request("{$this->server}{$method}",$params);
    }

    private function request($request_url , $request_body){
        $useragent = 'Faceplusplus PHP SDK/1.0';
        $curl_handle = curl_init();
        curl_setopt($curl_handle, CURLOPT_URL, $request_url);
        curl_setopt($curl_handle, CURLOPT_FILETIME, TRUE);
        curl_setopt($curl_handle, CURLOPT_FRESH_CONNECT, FALSE);
        curl_setopt($curl_handle, CURLOPT_CLOSEPOLICY, CURLCLOSEPOLICY_LEAST_RECENTLY_USED);
        curl_setopt($curl_handle, CURLOPT_MAXREDIRS, 5);
        curl_setopt($curl_handle, CURLOPT_HEADER, FALSE);
        curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($curl_handle, CURLOPT_TIMEOUT, 5184000);
        curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 120);
        curl_setopt($curl_handle, CURLOPT_NOSIGNAL, TRUE);
        curl_setopt($curl_handle, CURLOPT_REFERER, $request_url);
        curl_setopt($curl_handle, CURLOPT_USERAGENT, $useragent);
        if (extension_loaded('zlib')){
            curl_setopt($curl_handle, CURLOPT_ENCODING, '');
        }
        curl_setopt($curl_handle, CURLOPT_POST, TRUE);
        if(array_key_exists('img',$request_body)){
            $request_body['img'] = '@'.$request_body['img'];
        }else{
            $request_body=http_build_query($request_body);
        }
        curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $request_body);
        $response_text = curl_exec($curl_handle);
        $reponse_header = curl_getinfo($curl_handle);
        curl_close($curl_handle);
        return array('http_code'=>$reponse_header['http_code'],'request_url'=>$request_url,'body'=>$response_text);
    }
}

在微信中再將結(jié)果整理成文本消息就可以了。

4. 效果展示

下面是實(shí)際使用結(jié)果:

漂亮/帥氣指數(shù)鑒定技術(shù)

微信公眾平臺(tái)消息接口開發(fā)圖片識(shí)別之如何實(shí)現(xiàn)人臉識(shí)別微信公眾平臺(tái)消息接口開發(fā)圖片識(shí)別之如何實(shí)現(xiàn)人臉識(shí)別

近親及親子鑒定技術(shù)

微信公眾平臺(tái)消息接口開發(fā)圖片識(shí)別之如何實(shí)現(xiàn)人臉識(shí)別微信公眾平臺(tái)消息接口開發(fā)圖片識(shí)別之如何實(shí)現(xiàn)人臉識(shí)別

男人味/女人味鑒定技術(shù)

微信公眾平臺(tái)消息接口開發(fā)圖片識(shí)別之如何實(shí)現(xiàn)人臉識(shí)別微信公眾平臺(tái)消息接口開發(fā)圖片識(shí)別之如何實(shí)現(xiàn)人臉識(shí)別

以上是“微信公眾平臺(tái)消息接口開發(fā)圖片識(shí)別之如何實(shí)現(xiàn)人臉識(shí)別”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI