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 相关文章推荐
用Flash图形化数据(二)
Oct 09 PHP
ZF等常用php框架中存在的问题
Jan 10 PHP
解决PHP在DOS命令行下却无法链接MySQL的技术笔记
Dec 29 PHP
php 搜索框提示(自动完成)实例代码
Feb 05 PHP
php实现把数组按指定的个数分隔
Feb 17 PHP
php反射应用示例
Feb 25 PHP
解密ThinkPHP3.1.2版本之模板继承
Jun 19 PHP
PHP的中使用非缓冲模式查询数据库的方法
Feb 05 PHP
ThinkPHP5+Layui实现图片上传加预览功能
Aug 17 PHP
php基于Redis消息队列实现的消息推送的方法
Nov 28 PHP
php面向对象程序设计中self与static的区别分析
May 21 PHP
php的单例模式及应用场景详解
Feb 27 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提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
2011/02/08 PHP
使用ltrace工具跟踪PHP库函数调用的方法
2016/04/25 PHP
php的api数据接口书写实例(推荐)
2016/09/22 PHP
PHP+Oracle本地开发环境搭建方法详解
2019/04/01 PHP
Jquery Ajax学习实例6 向WebService发出请求,返回DataSet(XML) 异步调用
2010/03/18 Javascript
Dom 学习总结以及实例的使用介绍
2013/04/24 Javascript
Javascript弹出窗口的各种方法总结
2013/11/11 Javascript
JS比较2个日期间隔的示例代码
2014/04/15 Javascript
js+cookies实现悬浮购物车的方法
2015/05/25 Javascript
基于replaceChild制作简单的吞噬特效
2015/09/21 Javascript
jquery实现右侧栏菜单选择操作
2016/03/04 Javascript
JavaScript函数节流和函数防抖之间的区别
2017/02/15 Javascript
angular ng-repeat数组中的数组实例
2017/02/18 Javascript
关于vue-router的beforeEach无限循环的问题解决
2017/09/09 Javascript
vue 实现类似淘宝星级评分的示例
2018/03/01 Javascript
Element UI 自定义正则表达式验证方法
2018/09/04 Javascript
vue路由中前进后退的一些事儿
2019/05/18 Javascript
JavaScript 作用域实例分析
2019/10/02 Javascript
react-native 实现购物车滑动删除效果的示例代码
2021/01/15 Javascript
Python实现国外赌场热门游戏Craps(双骰子)
2015/03/31 Python
Python输出汉字字库及将文字转换为图片的方法
2016/06/04 Python
用Cython加速Python到“起飞”(推荐)
2019/08/01 Python
Python requests模块cookie实例解析
2020/04/14 Python
使用Keras预训练模型ResNet50进行图像分类方式
2020/05/23 Python
幼教简历自我评价
2014/01/28 职场文书
一年级评语大全
2014/04/23 职场文书
五好关工委申报材料
2014/05/31 职场文书
保密工作目标责任书
2014/07/28 职场文书
2014市府办领导班子“四风问题”对照检查材料思想汇报
2014/09/24 职场文书
2015年政务公开工作总结
2015/05/19 职场文书
2016年社区国庆节活动总结
2016/04/01 职场文书
大学生创业,为什么都会选择快餐饮?
2019/08/08 职场文书
MySQL获取所有分类的前N条记录
2021/05/07 MySQL
Python函数中的不定长参数相关知识总结
2021/06/24 Python
Java中CyclicBarrier和CountDownLatch的用法与区别
2021/08/23 Java/Android
uniapp引入支付宝原生扫码插件步骤详解
2022/07/23 Javascript