PHP使用百度api实现人脸识别(免费版)

原理很简单:设备捕捉到人脸,拍照,将捕捉到的照片与人脸库中的所有基准图做对比,会找出相似度大于某值(具体数值可自己设置)的n张照片,取相似值最接近的一张即为此用户。

1.首先注册个百度账号,登录百度ai  https://console.bce.baidu.com/

2.在人脸识别-应用列表中建立一个应用(如图):此处的APPID 、API KEY 、SECRET KEY 记下来,需要用到

3.在可视化人脸库中建用户组(人脸基准图会放在用户组中):

可以看下代码示例:

<?php

namespace services\ai;

use Yii;

require_once(__DIR__."/aip-php-sdk-2.2.4/AipFace.php");

class BaiduFace extends \services\Service
{
    const SCORE = 50;
    private $_APP_ID = '*******';
    private $_API_KEY = 'M***************x';
    private $_SECRET_KEY = 'X**********************j';
    private $_app;

    public function init()
    {
        try{
            if(\models\setting\Config::get('baidu_ai_APP_ID')){
                $this->_APP_ID = \models\setting\Config::get('baidu_ai_APP_ID');
            }
            if(\models\setting\Config::get('baidu_ai_API_KEY')){
                $this->_API_KEY = \models\setting\Config::get('baidu_ai_API_KEY');
            }
            if(\models\setting\Config::get('baidu_ai_SECRET_KEY')){
                $this->_SECRET_KEY = \models\setting\Config::get('baidu_ai_SECRET_KEY');
            }
        }catch (\Exception $e){
            \models\setting\Log::error($e->getMessage());
        }

        parent::init(); // TODO: Change the autogenerated stub
    }

    private function getApp()
    {
        if(!$this->_app){
            $this->_app = new \AipFace($this->_APP_ID, $this->_API_KEY, $this->_SECRET_KEY);
        }
        return $this->_app;
    }

/*search函数 搜寻人脸库图片,找与当前照片相似度高的图片*/
    public function search($data)
    {
        $groupIdList = "1";//此处为用户组名
        if(!empty($data['group_id'])){
            $groupIdList = $data['group_id'];
        }
        $r = $this->getApp()->search($data['url'], 'URL', $groupIdList);
        if($r['error_code'] == 0){
            $userInfo = $r['result']['user_list'][0];
            if($userInfo['score'] >= self::SCORE){
                return $userInfo;
            }else{
                $error_msg = '识别结果相似度较低';
                return $error_msg;
            }
        }else{
            return $r['error_msg'];
        }
    }

/*添加新用户的人脸基准图(人脸信息采集),唯一标识可以是用户的user_uuid*/
    public function addUser($data)
    {
        $groupIdList = "1";//此处为用户组名
        if(!empty($data['group_id'])){
            $groupIdList = $data['group_id'];
        }
        $r = $this->getApp()->addUser($data['url'], 'URL', $groupIdList, $data['user_uuid']);
        if($r['error_code'] == 0){
//            return $r['result']['user_list'][0];
            return true;

        }else{
            $this->addError($r['error_msg']);
            return false;
        }
    }

/*更新用户的人脸基准图(人脸信息采集),若没有此用户,则新加。建议使用此函数。唯一标识可以是用户的user_uuid*/
    public function updateUser($data)
    {
        $groupIdList = "1";//此处为用户组名
        if(!empty($data['group_id'])){
            $groupIdList = $data['group_id'];
        }
        $options = array();
        $options["action_type"] = "REPLACE";
        $r = $this->getApp()->updateUser($data['url'], 'URL', $groupIdList, $data['user_uuid'], $options);
        if($r['error_code'] == 0){
//            return $r['result']['user_list'][0];
            return true;
        }else{
//            $this->addError($r['error_msg']);
            return $r['error_msg'];
        }
    }
}

tip:在添加人脸前,需要先查询下人脸库中是否有相似度较高的图片,防止同一个人脸注册多个账号!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值