首先先注册账户

https://console.bce.baidu.com/?fromai=1#/aip/overview

点击链接 有账户直接登录  如无 则注册

进入控制台后

点击人脸识别

随便选 默认就有人脸识别的权限 因为是基础服务

然后我们新建一个web项目 或者一个SE项目

新建一个类 代码如下  如果需要其他语言的代码请看官方API

import com.alibaba.fastjson.JSONObject;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import java.util.Map; /**
* 获取token类
*/
public class AuthService { /**
* 获取权限token
* @return 返回示例:
* {
* "access_token": "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567",
* "expires_in": 2592000
* }
*/
public static String getAuth() {
// 官网获取的 API Key 更新为你注册的
String clientId = "";
// 官网获取的 Secret Key 更新为你注册的
String clientSecret = "";
return getAuth(clientId, clientSecret);
} /**
* 获取API访问token
* 该token有一定的有效期,需要自行管理,当失效时需重新获取.
* @param ak - 百度云官网获取的 API Key
* @param sk - 百度云官网获取的 Securet Key
* @return assess_token 示例:
* "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567"
*/
public static String getAuth(String ak, String sk) {
// 获取token地址
String authHost = "https://aip.baidubce.com/oauth/2.0/token?";
String getAccessTokenUrl = authHost
// 1. grant_type为固定参数
+ "grant_type=client_credentials"
// 2. 官网获取的 API Key
+ "&client_id=" + ak
// 3. 官网获取的 Secret Key
+ "&client_secret=" + sk;
try {
URL realUrl = new URL(getAccessTokenUrl);
// 打开和URL之间的连接
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的响应
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String result = "";
String line;
while ((line = in.readLine()) != null) {
result += line;
}
/**
* 返回结果示例
*/
System.err.println("result:" + result);
JSONObject jsonObject = new JSONObject(Boolean.parseBoolean(result));
String access_token = jsonObject.getString("access_token");
return access_token;
} catch (Exception e) {
System.err.printf("获取token失败!");
e.printStackTrace(System.err);
}
return null;
} public static void main(String[] args) {
AuthService.getAuth();
} }

注:AK为APIKey    SK为 Secret Key

并且因为传输格式为JSON  所以我们可以用阿里巴巴的fastjson 这个是个人习惯 你们用Google的gson 或者其他库的也行

然后服务器返回的JSON文本参数如下:

  • access_token: 要获取的Access Token;

  • expires_in: Access Token的有效期(秒为单位,一般为1个月);

  • 其他参数忽略,暂时不用;

运行项目后我们只要access_token

注意:access_token的有效期为30天,切记需要每30天进行定期更换,或者每次请求都拉取新token;

如果认证失败 一般会有认证错误码这个你根据官方文档来就行了

正所谓人脸识别 所以我们需要一张图片

图片百度随便搜

然后下载百度智能云提供的几个工具类

/**
* 重要提示代码中所需工具类
* 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
* 下载
*/

然后新建一个主函数就行了

import util.Base64Util;
import util.FileUtil;
import util.GsonUtils;
import util.HttpUtil; import java.net.URLEncoder;
import java.util.*; /**
* 人脸检测与属性分析
*/
public class FaceDetect { /**
* 重要提示代码中所需工具类
* 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
* 下载
*/
public static String detect() {
// 请求url
String url = "https://aip.baidubce.com/rest/2.0/face/v3/detect";
String imagePath = "C:\\Users\\小飞\\Pictures\\cxk.jpg";
//图片路径 try {
byte[] imgData = FileUtil.readFileByBytes(imagePath);
String imageBase64 = Base64Util.encode(imgData);
Map<String, Object> map = new HashMap<>();
map.put("image", imageBase64);
map.put("face_field", "age,beauty,expression,face_shape,gender,glasses,landmark,landmark150,race,quality,eye_status,emotion,face_type");//这里是你想要返回的值 参数具体意思看文档 https://ai.baidu.com/docs#/Face-Detect-V3/top
map.put("image_type", "BASE64"); //采用BASE64编码 String param = GsonUtils.toJson(map); // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
String accessToken = "[调用鉴权接口获取的token]就是之前那个access_token"; String result = HttpUtil.post(url, accessToken, "application/json", param);
System.out.println(result);
return result;
} catch (Exception e) {
e.printStackTrace();
}
return null;
} public static void main(String[] args) {
FaceDetect.detect();
}
}

一般只需要修改这两个就可以了

还有 百度提供v2和v3两个版本 可以在下面查看自己的版本 选择对应的文档才行  不过现在最新的都是v3了

点击运行就可以了 一下就是成功返回的数据

如果想获得数据还需要用json库 成对象 或者字符串

如果不想要这么多参数 根据文档修改以下的参数就可以了

最新文章

  1. JAVABeanUtils
  2. (转载)PHPCMS V9专题路径多了一个斜杠的解决办法
  3. jsp 访问jdbc实例
  4. wf(三)
  5. Windows cmd 颜色,字体,color font set up
  6. C++资料大全
  7. 用css2属性clip实现网页进度条
  8. Getting.Started.with.Unity.2018.3rd.Edition
  9. Python计算分位数
  10. IP子系统集成
  11. python中pop()函数的用法
  12. TF-IDF原理
  13. ES6学习笔记(一):变量赋值和基本数据类型
  14. python 爬虫 重复下载 二次请求
  15. 2019年湖南多校第一场||2018-2019 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2018)
  16. ubuntu配置tomcat和jdk
  17. .net core系列之《.net core中使用集成IDistributedCache接口的Redis和MongoDB实现分布式缓存》
  18. linux 学习第九天
  19. [NOIP2011]刷水
  20. Exercise:Sparse Autoencoder

热门文章

  1. SSM使用PageHelper
  2. Linux基础介绍
  3. Java基础1-1-5—java基础语法(idea开发工具)
  4. Vue项目 invalid host header 问题 配置 disableHostCheck:true报错
  5. Quartz.Net 官方教程 Tutorial 2/3(Listener 和 JobStore)
  6. 浅谈Python中的包
  7. 一文详解数仓GaussDB(DWS) 函数出参带出方式
  8. 以docker方式部署的redis键值查询及清理
  9. JavaSE学习笔记(一)----java基础
  10. 题解 P1627 [CQOI2009] 中位数