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存储过程调用实例代码
Feb 03 PHP
php连接Access数据库错误及解决方法
Jun 20 PHP
PHP连接SQLServer2005的方法
Jan 27 PHP
PHP封装CURL扩展类实例
Jul 28 PHP
实例简介PHP的一些高级面向对象编程的特性
Nov 27 PHP
Yii2 ActiveRecord多表关联及多表关联搜索的实现
Jun 30 PHP
Yii框架连接mongodb数据库的代码
Jul 27 PHP
php通过执行CutyCapt命令实现网页截图的方法
Sep 30 PHP
php表单加入Token防止重复提交的方法分析
Oct 10 PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
Apr 08 PHP
thinkPHP框架实现多表查询的方法
Jun 14 PHP
详解laravel passport OAuth2.0的4种模式
Nov 04 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留言本实例代码
2010/05/09 PHP
php中二分法查找算法实例分析
2016/09/22 PHP
PHP递归算法的简单实例
2019/02/28 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
优化innerHTML操作(提高代码执行效率)
2011/08/20 Javascript
jQuery建立一个按字母顺序排列的友好页面索引(兼容IE6/7/8)
2013/02/26 Javascript
jQuery的Ajax用户认证和注册技术实例教程(附demo源码)
2015/12/08 Javascript
Json解析的方法小结
2016/06/22 Javascript
jQuery UI结合Ajax创建可定制的Web界面
2016/06/22 Javascript
jquery过滤特殊字符',防sql注入的实现方法
2016/08/17 Javascript
vue省市区三联动下拉选择组件的实现
2017/04/28 Javascript
JavaScript定义函数的三种实现方法
2017/09/23 Javascript
浅谈使用React.setState需要注意的三点
2017/12/18 Javascript
js将键值对字符串转为json字符串的方法
2018/03/30 Javascript
NodeJS模块与ES6模块系统语法及注意点详解
2019/01/04 NodeJs
一个因@click.stop引发的bug的解决
2019/01/08 Javascript
详解使用angular框架离线你的应用(pwa指南)
2019/01/31 Javascript
Layui实现主窗口和Iframe层参数传递
2019/11/14 Javascript
微信小程序实现锚点功能
2019/11/20 Javascript
[03:43]TI9战队采访——PSG.LGD
2019/08/22 DOTA
python实现2014火车票查询代码分享
2014/01/10 Python
Apache如何部署django项目
2017/05/21 Python
Python使用matplotlib绘图无法显示中文问题的解决方法
2018/03/14 Python
Python2.7.10以上pip更新及其他包的安装教程
2018/06/12 Python
python 操作excel表格的方法
2020/12/05 Python
HTML5 Canvas标签使用收录
2009/07/07 HTML / CSS
美国二手复古奢侈品包包购物网站:LXRandCo
2019/06/18 全球购物
DataList 能否分页,请问如何实现?
2015/05/03 面试题
致100米运动员广播稿
2014/02/14 职场文书
遗体告别仪式主持词
2014/03/20 职场文书
商铺门前三包责任书
2014/07/25 职场文书
离婚协议书标准格式
2014/10/04 职场文书
交通事故和解协议书
2015/01/27 职场文书
投资意向协议书
2015/01/29 职场文书
电话营销开场白
2015/05/29 职场文书
Node-Red实现MySQL数据库连接的方法
2021/08/07 MySQL