PHP实现百度人脸识别


Posted in PHP onMay 06, 2019

PHP接入百度人脸识别,供大家参考,具体内容如下

1.注册百度开发者账号。

https://login.bce.baidu.com/?account= 注册登录成功后,进入控制台,在左边的导航栏找到产品-》人工智能-》人脸识别:

PHP实现百度人脸识别

创建应用。创建应用成功后拿到应用的API Key和Secret Key

2.接口调用-获取access token

调用人脸识别接口前需要获取access token,示例代码:

function execCurl($url, $param) {
 if (empty($url) || empty($param)) {
  return array('result' => false, 'err_msg' => 'url or param is null');
 }
 $curl = curl_init();//初始化curl
 curl_setopt($curl, CURLOPT_URL, $url);//抓取指定网页
 curl_setopt($curl, CURLOPT_HEADER, 0);//设置header
 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
 curl_setopt($curl, CURLOPT_POST, 1);//post提交方式
 curl_setopt($curl, CURLOPT_POSTFIELDS, $param);
 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
 $data = curl_exec($curl);//运行curl
 $curl_err_msg = curl_error($curl);
 curl_close($curl);
 if($data === false) {
  return array('result' => false, 'err_msg' => $curl_err_msg);
 }else {
  return array('result' => true, 'data' => $data);
 }
}
 
$url = 'https://aip.baidubce.com/oauth/2.0/token';
$param = array(
 'grant_type' => 'client_credentials',
 'client_id' => '你的API Key',
 'client_secret' => '你的Secret Key'
);
$result = execCurl($url, $param);

3.调用人脸检查接口

如果需要判断一张图片中的人脸,是否符合后续识别或者对比的条件,在请求时在face_field参数中请求quality。

下面示例是请求图文为base64转码字符串(转码不能包含头信息),也可以传图片网络地址,官方文档

示例代码:

function checkPictureToCheckFace($image_path, $access_token) {
 $url = 'https://aip.baidubce.com/rest/2.0/face/v3/detect?access_token=' . $access_token;
 $param = array(
  'image' => base64EncodeImage($image_path),
  'image_type' => 'BASE64',
  'face_field' => 'quality'
 );
 $param = json_encode($param);
 $result = execCurl($url, $param);
 if($result['result'] == false) return $result;
 $data = json_decode($result['data'], true);
 if($data['error_code'] != 0) return array('result' => false, 'err_msg' => '上传的人脸不符合要求,请重新上传五官清晰的真实头像');
 $err_result = array('result' => false, 'err_msg' => '上传的人脸不符合要求,请重新上传五官清晰的真实头像!');
 $quality = $data['result']['face_list'][0]['quality'];
 if($quality['occlusion']['left_eye'] > 0.6) return $err_result; // 左眼被遮挡的阈值
 if($quality['occlusion']['right_eye'] > 0.6) return $err_result; // 右眼被遮挡的阈值
 if($quality['occlusion']['nose'] > 0.7) return $err_result; // 鼻子被遮挡的阈值
 if($quality['occlusion']['mouth'] > 0.7) return $err_result; // 嘴巴被遮挡的阈值
 if($quality['occlusion']['left_cheek'] > 0.8) return $err_result; // 左脸颊被遮挡的阈值
 if($quality['occlusion']['right_cheek'] > 0.8) return $err_result; // 右脸颊被遮挡的阈值
 if($quality['occlusion']['chin_contour'] > 0.6) return $err_result; // 下巴被遮挡阈值
 if($quality['blur'] != 0 && $quality['blur'] > 0.7) return $err_result; // 模糊度范围 0是最清晰,1是最模糊
 if($quality['illumination'] < 40) return $err_result; // 光照范围 
 if($quality['completeness'] == 0) return $err_result; // 人脸完整度 0为人脸溢出图像边界,1为人脸都在图像边界内
 return array('result' => true);
}
 
function execCurl($url, $param) {
 if (empty($url) || empty($param)) {
  return array('result' => false, 'err_msg' => 'url or param is null');
 }
 $curl = curl_init();//初始化curl
 curl_setopt($curl, CURLOPT_URL, $url);//抓取指定网页
 curl_setopt($curl, CURLOPT_HEADER, 0);//设置header
 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
 curl_setopt($curl, CURLOPT_POST, 1);//post提交方式
 curl_setopt($curl, CURLOPT_POSTFIELDS, $param);
 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
 $data = curl_exec($curl);//运行curl
 $curl_err_msg = curl_error($curl);
 curl_close($curl);
 if($data === false) {
  return array('result' => false, 'err_msg' => $curl_err_msg);
 }else {
  return array('result' => true, 'data' => $data);
 }
}
 
function base64EncodeImage($image_path) {
 $base64_image = '';
 $image_info = getimagesize($image_path);
 $image_data = fread(fopen($image_path, 'r'), filesize($image_path));
 $base64_image = chunk_split(base64_encode($image_data));
 return $base64_image;
}
 
$image_path = 'image/1.jpg';
$access_token = '上一步的获取access token';
$result = checkPictureToCheckFace($image_path, $access_token);

判断是否符合人脸识别检查的字段说明:

PHP实现百度人脸识别

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
简单的PHP缓存设计实现代码
Sep 30 PHP
php使用strtotime和date函数判断日期是否有效代码分享
Dec 25 PHP
Thinkphp中Create方法深入探究
Jun 16 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
Aug 19 PHP
微信公众号模板消息群发php代码示例
Dec 29 PHP
php str_replace替换指定次数的方法详解
May 05 PHP
php + nginx项目中的权限详解
May 23 PHP
thinkPHP实现基于ajax的评论回复功能
Jun 22 PHP
PHP使用SMTP邮件服务器发送邮件示例
Aug 28 PHP
tp5(thinkPHP5框架)captcha验证码配置及验证操作示例
May 28 PHP
php让json_encode不自动转义斜杠“/”的方法
Apr 27 PHP
php解析非标准json、非规范json的方式实例
May 10 PHP
PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】
May 06 #PHP
PHP连接SQL Server的方法分析【基于thinkPHP5.1框架】
May 06 #PHP
php + WebUploader实现图片批量上传功能
May 06 #PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
May 06 #PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
May 06 #PHP
PHP实现八皇后算法
May 06 #PHP
Laravel中10个有用的用法小结
May 06 #PHP
You might like
php获取某个目录大小的代码
2008/09/10 PHP
php教程之魔术方法的使用示例(php魔术函数)
2014/02/12 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
2017/02/15 PHP
Nigma vs AM BO3 第一场2.13
2021/03/10 DOTA
js获取字符串最后一位方法汇总
2014/11/13 Javascript
jquery ajax分页插件的简单实现
2016/01/27 Javascript
JS返回只包含数字类型的数组实例分析
2016/12/16 Javascript
JS实现物体带缓冲的间歇运动效果示例
2016/12/22 Javascript
js实现增加数字显示的环形进度条效果
2017/02/05 Javascript
使用Vue-Router 2实现路由功能实例详解
2017/11/14 Javascript
关于Vue单页面骨架屏实践记录
2017/12/13 Javascript
10个在JavaScript开发中常遇到的BUG
2017/12/18 Javascript
Vue-Router模式和钩子的用法
2018/02/28 Javascript
解决Angular2 router.navigate刷新页面的问题
2018/08/31 Javascript
详解JavaScript对数组操作(添加/删除/截取/排序/倒序)
2019/04/28 Javascript
Vue中遍历数组的新方法实例详解
2019/07/21 Javascript
Vue使用NProgress进度条的方法
2019/09/21 Javascript
微信小程序入门之指南针
2020/10/22 Javascript
Vue包大小优化的实现(从1.72M到94K)
2021/02/18 Vue.js
Python单例模式的两种实现方法
2017/08/14 Python
python跳过第一行快速读取文件内容的实例
2018/07/12 Python
连接pandas以及数组转pandas的方法
2019/06/28 Python
Pycharm连接远程服务器并实现远程调试的实现
2019/08/02 Python
Django认证系统实现的web页面实现代码
2019/08/12 Python
python之pygame模块实现飞机大战完整代码
2020/11/29 Python
详解修改Anaconda中的Jupyter Notebook默认工作路径的三种方式
2021/01/24 Python
Html5百叶窗效果的示例代码
2017/12/11 HTML / CSS
开展批评与自我批评发言材料
2014/05/15 职场文书
教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
承诺书范本
2015/01/21 职场文书
上班旷工检讨书
2015/08/15 职场文书
高三物理教学反思
2016/02/20 职场文书
python如何做代码性能分析
2021/04/26 Python
python中Matplotlib绘制直线的实例代码
2021/07/04 Python
python分分钟绘制精美地图海报
2022/02/15 Python
Python可视化神器pyecharts之绘制地理图表练习
2022/07/07 Python