Chinaunix首页 | 论坛 | 博客
  • 博客访问: 605114
  • 博文数量: 298
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 3077
  • 用 户 组: 普通用户
  • 注册时间: 2019-06-17 10:57
文章分类

全部博文(298)

文章存档

2022年(96)

2021年(201)

2019年(1)

我的朋友

分类: Java

2021-07-02 18:01:17

 1. 获取token

点击(此处)折叠或打开

  1. package org.fh.util;

  2. import org.json.JSONObject;

  3. import java.io.BufferedReader;
  4. import java.io.InputStreamReader;
  5. import java.net.HttpURLConnection;
  6. import java.net.URL;
  7. import java.util.List;
  8. import java.util.Map;

  9. /**
  10.  * 说明:获取百度人脸识别token类
  11.  * 作者:F-H
  12.  * from:fhadmin.cn
  13.  */
  14. public class AuthService {
  15.     
  16.     /**
  17.      * 获取权限token
  18.      * @return 返回示例:
  19.      * {
  20.      * "access_token": "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567",
  21.      * "expires_in": 2592000
  22.      * }
  23.      */
  24.     public static String getAuth() {
  25.         // 官网获取的 API Key 更新为你注册的
  26.         String clientId = "xxxx";
  27.         // 官网获取的 Secret Key 更新为你注册的
  28.         String clientSecret = "ssss";
  29.         return getAuth(clientId, clientSecret);
  30.     }

  31.     /**
  32.      * 获取API访问token
  33.      * 该token有一定的有效期,需要自行管理,当失效时需重新获取.
  34.      * @param ak - 百度云官网获取的 API Key
  35.      * @param sk - 百度云官网获取的 Securet Key
  36.      * @return assess_token 示例:
  37.      * "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567"
  38.      */
  39.     public static String getAuth(String ak, String sk) {
  40.         // 获取token地址
  41.         String authHost = "";
  42.         String getAccessTokenUrl = authHost
  43.                 // 1. grant_type为固定参数
  44.                 + "grant_type=client_credentials"
  45.                 // 2. 官网获取的 API Key
  46.                 + "&client_id=" + ak
  47.                 // 3. 官网获取的 Secret Key
  48.                 + "&client_secret=" + sk;
  49.         try {
  50.             URL realUrl = new URL(getAccessTokenUrl);
  51.             // 打开和URL之间的连接
  52.             HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();
  53.             connection.setRequestMethod("GET");
  54.             connection.connect();
  55.             // 获取所有响应头字段
  56.             Map<String, List<String>> map = connection.getHeaderFields();
  57.             // 遍历所有的响应头字段
  58.             for (String key : map.keySet()) {
  59.                 System.err.println(key + "--->" + map.get(key));
  60.             }
  61.             // 定义 BufferedReader输入流来读取URL的响应
  62.             BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
  63.             String result = "";
  64.             String line;
  65.             while ((line = in.readLine()) != null) {
  66.                 result += line;
  67.             }
  68.             /**
  69.              * 返回结果示例
  70.              */
  71.             JSONObject jsonObject = new JSONObject(result);
  72.             String access_token = jsonObject.getString("access_token");
  73.             return access_token;
  74.         } catch (Exception e) {
  75.             System.err.printf("获取token失败!");
  76.             e.printStackTrace(System.err);
  77.         }
  78.         return null;
  79.     }

  80. }
2.人脸对比

点击(此处)折叠或打开

  1. package org.fh.util;

  2. import java.util.*;

  3. import net.sf.json.JSONObject;

  4. /**
  5.  * 说明:人脸对比
  6.  * 作者:F-H
  7.  * from:fhadmin.cn
  8.  */
  9. public class FaceMatch {

  10.     public static String faceMatch(List<Object> list) {
  11.         // 请求url
  12.         String url = "";
  13.         try {
  14.             String param = GsonUtils.toJson(list);
  15.             // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
  16.             String accessToken = AuthService.getAuth();
  17.             String result = HttpUtil.post(url, accessToken, "application/json", param);
  18.             return result;
  19.         } catch (Exception e) {
  20.             e.printStackTrace();
  21.         }
  22.         return null;
  23.     }

  24.     //PHOTODATA1 图片1的 base64码
  25.     //PHOTODATA2 图片2的 base64码 返回的score大于80 说明是同一个人
  26.     public static String getScore(String PHOTODATA1,String PHOTODATA2) {
  27.         List<Object> list = new ArrayList<Object>();
  28.         Map<String,String> map1 = new HashMap<String,String>();
  29.         map1.put("image", PHOTODATA1);
  30.         map1.put("image_type", "BASE64");
  31.         map1.put("face_type", "LIVE");
  32.         map1.put("quality_control", "NONE");
  33.         map1.put("liveness_control", "NONE");
  34.         list.add(map1);
  35.         Map<String,String> map2 = new HashMap<String,String>();
  36.         map2.put("image", PHOTODATA2);
  37.         map2.put("image_type", "BASE64");
  38.         map2.put("face_type", "LIVE");
  39.         map2.put("quality_control", "NONE");
  40.         map2.put("liveness_control", "NONE");
  41.         list.add(map2);
  42.         String resultStr = FaceMatch.faceMatch(list);
  43.         JSONObject jsonMsg = JSONObject.fromObject(resultStr);
  44.         String error_msg = jsonMsg.getString("error_msg");
  45.         String score = "0";
  46.         if("SUCCESS".equals(error_msg)) {
  47.             String result = jsonMsg.getString("result");
  48.             JSONObject jsonResult = JSONObject.fromObject(result);
  49.             score = jsonResult.getString("score");
  50.         }
  51.         return score;
  52.     }
  53.     
  54. }


阅读(824) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~