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 相关文章推荐
APMServ使用说明
Oct 23 PHP
在任意字符集下正常显示网页的方法一
Apr 01 PHP
非常不错的MySQL优化的8条经验
Mar 24 PHP
php下过滤html代码的函数 提高程序安全性
Mar 02 PHP
基于PHP创建Cookie数组的详解
Jul 03 PHP
PHP URL路由类实例
Nov 12 PHP
php读取目录及子目录下所有文件名的方法
Oct 20 PHP
PHP has encountered a Stack overflow问题解决方法
Nov 03 PHP
thinkphp模板输出技巧汇总
Nov 24 PHP
PHP中SESSION的注销与清除
Apr 16 PHP
PHP数组操作类实例
Jul 11 PHP
PHP Trait代码复用类与多继承实现方法详解
Jun 17 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 smarty的预保留变量总结
2008/12/04 PHP
php flv视频时间获取函数
2010/06/29 PHP
php 无限级数据JSON格式及JS解析
2010/07/17 PHP
大家都应该掌握的PHP关联数组使用技巧
2015/12/25 PHP
PHP之将POST数据转化为字符串的实现代码
2016/11/03 PHP
ThinkPHP防止重复提交表单的方法实例分析
2018/05/10 PHP
php进程daemon化的正确实现方法
2018/09/06 PHP
js function定义函数的几种不错方法
2014/02/27 Javascript
浅谈JavaScript 框架分类
2014/11/10 Javascript
JavaScript实现弹窗效果代码分析
2017/03/09 Javascript
Vue.js实战之通过监听滚动事件实现动态锚点
2017/04/04 Javascript
jquery点赞功能实现代码 点个赞吧!
2020/05/29 jQuery
DVA框架统一处理所有页面的loading状态
2017/08/25 Javascript
nginx配置React静态页面的方法教程
2017/11/03 Javascript
mescroll.js上拉加载下拉刷新组件使用详解
2017/11/13 Javascript
Angularjs过滤器实现动态搜索与排序功能示例
2017/12/13 Javascript
node.js事件轮询机制原理知识点
2019/12/22 Javascript
js实现带搜索功能的下拉框
2020/01/11 Javascript
[01:07:11]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python标准库与第三方库详解
2014/07/22 Python
Python用户推荐系统曼哈顿算法实现完整代码
2017/12/01 Python
Python实现的knn算法示例
2018/06/14 Python
程序员写Python时的5个坏习惯,你有几条?
2018/11/26 Python
python3去掉string中的标点符号方法
2019/01/22 Python
python获取linux系统信息的三种方法
2020/10/14 Python
如何利用python检测图片是否包含二维码
2020/10/15 Python
对CSS3选择器的研究(详解)
2016/09/16 HTML / CSS
乌克兰巴士票购买网站:inBus
2021/03/12 全球购物
WebSphere面试题:在WebSphere里面如何部署一个应用
2015/08/02 面试题
优秀护士获奖感言
2014/02/20 职场文书
2014年五一促销活动方案
2014/03/09 职场文书
数据保密承诺书
2014/06/03 职场文书
繁星春水读书笔记
2015/06/30 职场文书
HTML基础-标签分类(闭合标签,空标签,块级元素,行内元素,行级块元素,可替换元素)
2021/03/31 HTML / CSS
JavaScript实现简单图片切换
2021/04/29 Javascript
Golang日志包的使用
2022/04/20 Golang