基于百度AI人脸识别技术的Demo
编写demo之前首先浏览官方API:http://ai.baidu.com/docs#/Face-API/top
下面是源码:
package com.examsafety.test; import com.examsafety.test.baiduAi.Base64Util;
import com.examsafety.test.baiduAi.FileUtil;
import com.examsafety.test.baiduAi.HttpUtil;
import net.sf.json.JSONObject; import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Map; /**
* 百度AI人脸识别demo
*
* @author Libin
* @create 2017-12-20 16:35
* @Copyright: www.sinotn.com. All rights reserved.
**/
public class FaceAiDemo {
/**
* 百度云AK
*/
private static final String API_KEY = "你的AK";
/**
* 百度云SK
*/
private static final String SECRET_KEY = "你的SK";
/**
* 获取access_token的接口地址
*/
private static final String AUTH_HOST = "https://aip.baidubce.com/oauth/2.0/token?";
/**
* 进行人脸探测的接口地址
*/
private static final String DETECT_HOST = "https://aip.baidubce.com/rest/2.0/face/v1/detect"; public static void main(String[] args){
testDetect();
}
/**
* 人脸探测调用方法
*/
public static void testDetect(){
/**
* 照片路径集合:正式项目时可从数据库获取
*/
List<String> filePathList = new ArrayList<String>();
filePathList.add("C:\\Users\\Libin\\Desktop\\张三.jpg");
filePathList.add("C:\\Users\\Libin\\Desktop\\李四.jpg"); String imgFilePath = "";
String expressionStr = "";
String glassesStr = "";
for (String imgPathStr : filePathList){
JSONObject jsonObject = JSONObject.fromObject(detect(imgPathStr).optJSONArray("result").get(0));
/**
* 获取年龄、颜值分数、微笑程度、是否戴眼镜
*/
double age = jsonObject.optDouble("age");
double beauty = jsonObject.optDouble("beauty");
int expression = jsonObject.optInt("expression");
int glasses = jsonObject.optInt("glasses"); switch (expression){
case 0 : expressionStr = "不笑";
break;
case 1 : expressionStr = "微笑";
break;
case 2 : expressionStr = "大笑";
break;
default: expressionStr = "无法识别";
} switch (glasses){
case 0 : glassesStr = "无眼镜";
break;
case 1 : glassesStr = "普通眼镜";
break;
case 2 : glassesStr = "墨镜";
break;
default: glassesStr = "无法识别";
}
/**
* 控制台打印输出探测结果
* Tips:年龄默认为double,需用Math.round()四舍五入取整
*/
System.out.println("年龄:" + Math.round(age));
System.out.println("微笑程度:" + expressionStr);
System.out.println("眼镜:" + glassesStr);
System.out.println("颜值打分:" + beauty); } } /**
* 重要提示代码中所需工具类
* FileUtil,Base64Util,HttpUtil,GsonUtils请从
* https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72
* https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2
* https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3
* https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3
* 下载
*/
/**
* 人脸探测
* @return
*/
public static JSONObject detect(String filePath) {
JSONObject jsonObject = null;
try {
byte[] imgData = FileUtil.readFileByBytes(filePath);
String imgStr = Base64Util.encode(imgData);
String imgParam = URLEncoder.encode(imgStr, "UTF-8");
String param = "max_face_num=" + 5
+ "&face_fields="
+ "age,beauty,expression,faceshape,gender,glasses,landmark,race,qualities"
+ "&image=" + imgParam;
String accessToken = getAuth();
String result = HttpUtil.post(DETECT_HOST, accessToken, param);
jsonObject = JSONObject.fromObject(result);
return jsonObject;
} catch (Exception e) {
e.printStackTrace();
}
return null;
} /**
* 获取权限token
* @return
*/
public static String getAuth(){
// 获取token地址
String getAccessTokenUrl = AUTH_HOST
// 1. grant_type为固定参数
+ "grant_type=client_credentials"
// 2. 官网获取的 API Key
+ "&client_id=" + API_KEY
// 3. 官网获取的 Secret Key
+ "&client_secret=" + SECRET_KEY;
JSONObject jsonObject = null;
BufferedReader in = null;
try {
URL realUrl = new URL(getAccessTokenUrl);
HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();
connection.setRequestMethod("GET");
connection.connect();
// 获取所有响应头字段
Map<String, List<String>> map = connection.getHeaderFields();
// 遍历所有的响应头字段
/*for (String key : map.keySet()) {
System.err.println(key + "--->" + map.get(key));
}*/
// 定义 BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String result = "";
String line;
while ((line = in.readLine()) != null) {
result += line;
}
/**
* 返回结果示例
*/
jsonObject = JSONObject.fromObject(result);
String access_token = jsonObject.getString("access_token");
return access_token;
} catch (Exception e) {
e.printStackTrace();
} finally {
if(in!=null){
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return null;
}
}
控制台打印:
基于百度AI人脸识别技术的Demo的更多相关文章
- 基于 HTML5 的人脸识别技术
基于 HTML5 的人脸识别技术 https://github.com/auduno/headtrackr/
- 基于C# 调用百度AI 人脸识别
一.设置 登录百度云控制台,添加应用-添加人脸识别,查找,对比等. 记住API Key和Secret Key 二.创建Demo程序 1.使用Nuget安装 Baidu.AI 和 Newtonsoft. ...
- 百度AI人脸识别的学习总结
本文主要分以下几个模块进行总结分析 项目要求:运用百度AI(人脸识别)通过本地与外网之间的信息交互(MQService),从而通过刷脸实现登陆.签字.会议签到等: 1.准备工作: 内网:单击事件按钮— ...
- 技能节-AI人脸识别
我们收到技能节项目的通知是在两周之前,项目要求做个人脸评分系统. 两周时间写一个"人脸评分系统",好像时间比较紧了,还好我们完成了~这个项目是将摄像头捕获到的包含人脸的图像传输到百 ...
- 基于百度AI开放平台的人脸识别及语音合成
基于百度AI的人脸识别及语音合成课题 课题需求 (1)人脸识别 在Web界面上传人的照片,后台使用Java技术接收图片,然后对图片进行解码,调用云平台接口识别人脸特征,接收平台返回的人员年龄.性别.颜 ...
- 基于Arcface 免费离线人脸识别 2.0 Demo C#
本来打算做个C#版demo,但没用成功.使用虹软最新人脸识别技术开发完成 过程如下: 1. 传入一张单人脸照片: 2.调用检测人脸函数ASFDetectFaces,成功返回人脸信息的指针: 3.使用 ...
- python基于百度AI开发文字识别
很多场景都会用到文字识别,比如app或者网站里都会上传身份证等证件以及财务系统识别报销证件等等 第一步,你需要去百度AI里去注册一个账号,然后新建一个文字识别的应用 然后你将得到一个API Key 和 ...
- 人脸识别最新开发经验demo分享
本来打算做个C#版demo,但没用成功,基于虹软的免费人脸识别技术 过程如下: 1. 传入一张单人脸照片: 2.调用检测人脸函数ASFDetectFaces,成功返回人脸信息的指针: 3.使用 Mar ...
- 基于 OpenCV 的人脸识别
基于 OpenCV 的人脸识别 一点背景知识 OpenCV 是一个开源的计算机视觉和机器学习库.它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包.根据这个项目的关于页面,OpenC ...
随机推荐
- super(Student,self).__init__()初始化的是什么东西?
继承不是为了继承里面原来的属性和值么,不初始化的话,会有什么问题? 2015-04-04源自:python进阶 5-17642 浏览2 回答 最佳回答 2015-05-05 1 super(Stude ...
- 尝试用React写几个通用组件 - 带搜索功能的下拉列表,开关切换按钮,弹出框
尝试用React写几个通用组件 - 带搜索功能的下拉列表,开关切换按钮,弹出框 近期正在逐步摸索学习React的用法,尝试着写几个通用型的组件,整体项目还是根据webpack+react+css-me ...
- 笔试算法题(40):后缀数组 & 后缀树(Suffix Array & Suffix Tree)
议题:后缀数组(Suffix Array) 分析: 后缀树和后缀数组都是处理字符串的有效工具,前者较为常见,但后者更容易编程实现,空间耗用更少:后缀数组可用于解决最长公共子串问题,多模式匹配问题,最长 ...
- 新增feeds模块
很简单,参考<产品差异化定制> 1.在fees/luci/model下面新增文件夹,必须的有:Makefile 和 luasrc/controller/admin/xxx.lua 2.执行 ...
- IDEA基本使用及配置(2)
IDEA配置:File >> Setiings进入配置界面 1.主题配置:默认两种主题,黑色.白色,可以自己在网上下载,然后File >> Import Setiings导入, ...
- ubuntu 虚拟机系统调优
Ubuntu虚拟机镜像最佳实践 分区/boot >1G/root >10G/var >5G配swap空间,内存的2倍 vi /etc/secur ...
- linux下mysql的安装与使用
一.mysql的安装 之前搭建linux下项目的发布,最后遗留的问题时数据库的迁移,如何从windows上迁移到linux上?这里首先进行mysql数据库的安装 1.下载mysql安装包 在这里下载的 ...
- 第十一节:pandas统计函数
1.pct_change()计算增长比例 2.cov()协方差 3.corr()相关系数 4.rank()数据排名 5.numpy聚合函数
- idea+Maven+SSM框架增删改查
完整项目结构 1.maven配置文件pom.xml <?xml version="1.0" encoding="UTF-8"?> <!-- L ...
- [K/3Cloud] 代码中设置某个字段必录
Control ctl = this.GetControl(fieldKey); FieldEditor editCtl = ctl as FieldEditor; if (editCtl != nu ...