本文主要是介绍java 调用百度人脸对比api接口,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. 获取token
package org.fh.util;import org.json.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类* 作者:F-H* from:www.fhadmin.cn*/
public class AuthService {/*** 获取权限token* @return 返回示例:* {* "access_token": "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567",* "expires_in": 2592000* }*/public static String getAuth() {// 官网获取的 API Key 更新为你注册的String clientId = "xxxx";// 官网获取的 Secret Key 更新为你注册的String clientSecret = "ssss";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;}/*** 返回结果示例*/JSONObject jsonObject = new JSONObject(result);String access_token = jsonObject.getString("access_token");return access_token;} catch (Exception e) {System.err.printf("获取token失败!");e.printStackTrace(System.err);}return null;}}
2.人脸对比
package org.fh.util;import java.util.*;import net.sf.json.JSONObject;/*** 说明:人脸对比* 作者:F-H* from:www.fhadmin.cn*/
public class FaceMatch {public static String faceMatch(List<Object> list) {// 请求urlString url = "https://aip.baidubce.com/rest/2.0/face/v3/match";try {String param = GsonUtils.toJson(list);// 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。String accessToken = AuthService.getAuth();String result = HttpUtil.post(url, accessToken, "application/json", param);return result;} catch (Exception e) {e.printStackTrace();}return null;}//PHOTODATA1 图片1的 base64码//PHOTODATA2 图片2的 base64码 返回的score大于80 说明是同一个人public static String getScore(String PHOTODATA1,String PHOTODATA2) {List<Object> list = new ArrayList<Object>();Map<String,String> map1 = new HashMap<String,String>();map1.put("image", PHOTODATA1);map1.put("image_type", "BASE64");map1.put("face_type", "LIVE");map1.put("quality_control", "NONE");map1.put("liveness_control", "NONE");list.add(map1);Map<String,String> map2 = new HashMap<String,String>();map2.put("image", PHOTODATA2);map2.put("image_type", "BASE64");map2.put("face_type", "LIVE");map2.put("quality_control", "NONE");map2.put("liveness_control", "NONE");list.add(map2);String resultStr = FaceMatch.faceMatch(list);JSONObject jsonMsg = JSONObject.fromObject(resultStr);String error_msg = jsonMsg.getString("error_msg");String score = "0";if("SUCCESS".equals(error_msg)) {String result = jsonMsg.getString("result");JSONObject jsonResult = JSONObject.fromObject(result);score = jsonResult.getString("score");}return score;}}
这篇关于java 调用百度人脸对比api接口的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!