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

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

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

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

PHP使用百度api实现人脸识别(免费版)_第1张图片

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

PHP使用百度api实现人脸识别(免费版)_第2张图片

可以看下代码示例:

_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:在添加人脸前,需要先查询下人脸库中是否有相似度较高的图片,防止同一个人脸注册多个账号!

你可能感兴趣的:(php,百度api,PHP实现百度人脸识别,百度ai,PHP人脸识别)