有一天无意中看到,通过百度人工智能平台中的人脸检测模块,可以实现简单的人脸检测,百度人工智能平台免费注册,人脸检测模块免费使用。相关API文档在:百度AI开放平台-全球领先的人工智能服务平台-百度AI开放平台,依照API文档就可以写出一个简单的检测工具。于是就想写一个测试用例来看看效果。

废话不多说,我们先看效果图:

是不是很有趣。这只是一个单php文件,直接放到php运行环境即可使用。可以使用phpstudy集成环境即可。上传的图片都存在了同级img目录。下面讲一下在写的过程中遇到的坑,源码会贴在最后。

1.注册百度账号,开通api

第一步要先注册百度账号,开通人脸检测接口,获取属于你自己的ak(API Key)和sk(Secret Key).

2.开发过程注意事项

我们先梳理一下流程。

  1. 看文档,看文档,看文档,重要的事情说三遍。百度官方文档:人脸开发文档
  2. 由文档我们知道。人脸检测的流程是先通过ak和sk获取属于自己的token,然后再根据token和请求参数去获取人脸信息。请求参数确定要你要获取的哪些人脸信息。
  3. 先走测试。了解下过程。百度在线人脸测试地址:百度智能云-ApiExplorer

tips:这里我用的图片是base64格式的。关于这个有一个坑。后面会说明。

3.填坑之旅

上传的图片转成base64,在传参时总是报错param[image_template] is null,这里我用的图片格式是base64,用官方给的数据FACE_TOKEN时,却是正常的。最后找了很久。终于终于解决了。这里感谢一下这位博客:php百度人脸识别param[image_template] is null使用BASE64图片类型json_decode返回NULL的处理解决方案_漏刻有时数据可视化大屏(PHP&ECHARTS智能化开源软件系统)-CSDN博客

关键代码其实就是这个:

for ($i = 0; $i <= 31; ++$i) {  //去空格$base = str_replace(chr($i), "", $base);
}

4.拿来主义看这里

上面的只是我在开发过程中遇到的坑和一些心得,唏嘘不已。看客们应该不关心。所以我还是直接上源码吧。

<!DOCTYPE html>
<html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="viewport" content="width=device-width, initial-scale=1.0,maximum-scale=1.0, user-scalable=no"><meta http-equiv="Cache-Control" content="no-siteapp"/> </head><body><?phpif(isset($_GET['action'])){echo "123";$action = $_GET['action'];call_user_func($action);}function gettoken(){$AK="你自己的ak";$SK="你自己的sk";$url="https://aip.baidubce.com/oauth/2.0/token";$bodys="grant_type=client_credentials&client_id=".$AK."&client_secret=".$SK;$token=geturl($url,$bodys)->access_token;return $token;}function base64EncodeImage ($image_file) {$base64_image = '';$image_info = getimagesize($image_file);$image_data = fread(fopen($image_file, 'r'), filesize($image_file));$base64_image = 'data:' . $image_info['mime'] . ';base64,' . chunk_split(base64_encode($image_data));return $base64_image;}function geturl($url='',$param=''){if (empty($url) || empty($param)) {return false;}$postUrl = $url;$curlPost = $param;$headerArray =array("Content-type:application/json;","Accept:application/json");$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch,CURLOPT_HTTPHEADER,$headerArray);// post提交方式curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);$output = curl_exec($ch);curl_close($ch);$output = json_decode($output);return $output;}$imgurl="";function upload(){// 允许上传的图片后缀$allowedExts = array("gif", "jpeg", "jpg", "png");$temp = explode(".", $_FILES["file"]["name"]);echo $_FILES["file"]["size"];$extension = end($temp);     // 获取文件后缀名if ((($_FILES["file"]["type"] == "image/gif")|| ($_FILES["file"]["type"] == "image/jpeg")|| ($_FILES["file"]["type"] == "image/jpg")|| ($_FILES["file"]["type"] == "image/pjpeg")|| ($_FILES["file"]["type"] == "image/x-png")|| ($_FILES["file"]["type"] == "image/png"))&& ($_FILES["file"]["size"] < 204800)   // 小于 200 kb&& in_array($extension, $allowedExts)){if ($_FILES["file"]["error"] > 0){echo "错误:: " . $_FILES["file"]["error"] . "<br>";}else{echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";echo "文件类型: " . $_FILES["file"]["type"] . "<br>";echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"] . "<br>";// 判断当前目录下的 upload 目录是否存在该文件// 如果没有 upload 目录,你需要创建它,upload 目录权限为 777if (file_exists("img/" . $_FILES["file"]["name"])){echo $_FILES["file"]["name"] . " 文件已经存在。<br><br><br> ";}else{// 如果 upload 目录不存在该文件则将文件上传到 upload 目录下move_uploaded_file($_FILES["file"]["tmp_name"], "img/" . $_FILES["file"]["name"]);echo "文件存储在: " . "img/" . $_FILES["file"]["name"]."<br><br><br>";}$img="img/" . $_FILES["file"]["name"];$base=base64EncodeImage($img);$imgurl = preg_replace('#data:image/[^;]+;base64,#', '', $base); //图片地址$url = 'https://aip.baidubce.com/rest/2.0/face/v3/detect?access_token=' . gettoken();$bodys = "{\"image\":\"{$imgurl}\",\"image_type\":\"BASE64\",\"face_field\":\"gender,age,beauty,gender,race,expression\",\"face_type\":\"LIVE\"}";for ($i = 0; $i <= 31; ++$i) {$bodys = str_replace(chr($i), "", $bodys);}for ($i = 0; $i <= 31; ++$i) {  //去空格$base = str_replace(chr($i), "", $base);}$result=geturl($url,$bodys);// echo "<pre>";// var_dump($result->result->face_list[0]);// echo "</pre>";if($result->error_msg=="SUCCESS"){echo "<img src={$base} style='width:400px' />";echo "<p>图片中包含人脸数:".$result->result->face_num;echo "<p>图片中包含人物年龄:".$result->result->face_list[0]->age;echo "<p>图片中包含人物颜值评分:".$result->result->face_list[0]->beauty;echo "<p>图片中包含人物性别:".$result->result->face_list[0]->gender->type."(male:男性 female:女性)";echo "<p>图片中包含人物种族:".$result->result->face_list[0]->race->type;echo "<p>图片中包含人物表情:".$result->result->face_list[0]->expression->type."(none:不笑;smile:微笑;laugh:大笑)";}else{echo "<p>{$result->error_msg}</p>";}}}else{echo "非法的文件格式";}}?><div class="main"><div class="form"><form action="face.php?action=upload" enctype="multipart/form-data" method="post"><input type="file" name="file" /><input type="submit" value="上传" /> </form> </div></div></body>
</html>   

这里要感谢一下这位博客:调用百度人脸检测API实现简单的颜值检测_寸先生的AI道路-CSDN博客_百度人脸检测颜值

不过他用的是python。我没试过。仅供参考。

转载请注明出处,谢谢!

php百度人脸检测api测颜值评分(源码直接可用)相关推荐

  1. Python爬取图片+百度人脸检测过滤高颜值美女

    pexels网站提供了大量贴图,从中搜索美女图片,编写爬虫进行下载,下载后图片中除了女人外,还包含男人,风景.静物和动物,调用百度人脸检测模块识别检测,将其中颜值大于60分的美女保存到另外一个文件夹. ...

  2. Python爬取图片+百度人脸检测过滤高颜值美女!

    pexels网站提供了大量贴图,从中搜索美女图片,编写爬虫进行下载,下载后图片中除了女人外,还包含男人,风景.静物和动物,调用百度人脸检测模块识别检测,将其中颜值大于60分的美女保存到另外一个文件夹. ...

  3. 爬取pexels女性图片+百度人脸检测过滤高颜值美女

    pexels网站提供了大量贴图,从中搜索美女图片,编写爬虫进行下载,下载后图片中除了女人外,还包含男人,风景.静物和动物,调用百度人脸检测模块识别检测,将其中颜值大于60分的美女保存到另外一个文件夹. ...

  4. 调用百度人脸检测API实现简单的颜值检测

    通过百度人工智能平台中的人脸检测模块,实现简单的人脸检测,百度人工智能平台免费注册,人脸检测模块免费使用.相关API文档在:http://ai.baidu.com/docs#/Face-Detect- ...

  5. 人脸检测(九)--检测器源码分析

    原文: http://blog.csdn.net/xidianzhimeng/article/details/41851569 还有几篇蛮好: http://blog.csdn.net/delltdk ...

  6. OpenCV开发笔记(五十四):红胖子8分钟带你深入了解Haar级联分类器进行人脸检测(图文并茂+浅显易懂+程序源码)

    若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 原博主博客导航:https://blog.csdn.net/qq21497936/ ...

  7. 2023最新小西瓜API接口集合管理系统源码+实测可用

    正文: 小西瓜API4.0整站源码,测试了一下内附很多本地接口,用的着的可以自己拿去体验吧,其它就没什么好介绍的了. 源码: wwxrgs.lanzouw.com/iwuZx0jruvoh 图片: $ ...

  8. python3调用百度人脸识别api检测颜值demo

    https://ai.baidu.com/docs#/Face-Detect/top 这个是百度人脸识别api 调用主要有三步: 获取access_token 将图片处理成base64编码格式 pos ...

  9. python人脸识别百度api_python3调用百度人脸识别api检测颜值demo

    https://ai.baidu.com/docs#/Face-Detect/top 这个是百度人脸识别api 调用主要有三步: 获取access_token 将图片处理成base64编码格式 pos ...

最新文章

  1. Redis源码解析——字典遍历
  2. 【每日一算法】重排链表
  3. Wmap5 测试80端口 Your port 80 is actually used by :Server: Microsoft-HTTPAPI/2.0
  4. Ubuntu 下安装 nfs
  5. linux运维安全方案,LINUX 安全运维 (一)
  6. boost::function_types::is_member_function_pointer用法的测试程序
  7. Dotnet Core Public API的安全实践
  8. python中tkinter的使用-下
  9. 同样是做冻品生意,哪类人更挣Q?
  10. (转)Django ==== 实战学习篇二 需求分析及设计,创建第一个模型---购物车的应用...
  11. 2021-06-09 动态的创建对象,通过反射.
  12. xcode ios 怎么导入p12证书
  13. android图片和文字设计,如何为图片加上精美文字?
  14. 有哪些好用的渲染软件?12个业内顶级渲染软件推荐
  15. 微信程序开发系列教程(二)微信订阅号+人工智能问答服务
  16. OSChina 娱乐弹弹弹——程序猿的酒文化
  17. java 打印jpg、pdf、word
  18. linux下的office 速度慢,针对Libreoffice卡顿奇慢的怪病,这里有一味特效药
  19. 图解2022年城市人口迁移趋势
  20. matlab 点顺时针排序,按顺时针顺序排序点?

热门文章

  1. 基于规则的分类器——FOIL信息增益——实际操作
  2. 用Javascript判断一个数是否是质数
  3. python中prin输出时出现中文乱码
  4. excel打印预览在哪里_打印小心机|不会打印页眉页脚你就输了
  5. Jetpack Compose - DropdownMenu
  6. 如果将公司的服务器托管到IDC机房会怎么样?
  7. 使用heroku部署项目
  8. 正大国际期货:外盘期货如何开设账户?
  9. JIRA零基础使用教程(二)- 基于JIRA的测试管理插件(Xray)
  10. AutoML论文笔记(十四)Automatic Data Augmentation via Deep Reinforcement Learning for Effective Kidney Tumor