java 人脸识别 调用百度api

忘是亡心i 2022-12-20 02:17 345阅读 0赞
  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
    • 官网:www.fhadmin.org
      */
      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. // 1. grant_type为固定参数
        2. + "grant_type=client_credentials"
        3. // 2. 官网获取的 API Key
        4. + "&client_id=" + ak
        5. // 3. 官网获取的 Secret Key
        6. + "&client_secret=" + sk;
        try {
        1. URL realUrl = new URL(getAccessTokenUrl);
        2. // 打开和URL之间的连接
        3. HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();
        4. connection.setRequestMethod("GET");
        5. connection.connect();
        6. // 获取所有响应头字段
        7. Map<String, List<String>> map = connection.getHeaderFields();
        8. // 遍历所有的响应头字段
        9. for (String key : map.keySet()) {
        10. System.err.println(key + "--->" + map.get(key));
        11. }
        12. // 定义 BufferedReader输入流来读取URL的响应
        13. BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        14. String result = "";
        15. String line;
        16. while ((line = in.readLine()) != null) {
        17. result += line;
        18. }
        19. /**
        20. * 返回结果示例
        21. */
        22. JSONObject jsonObject = new JSONObject(result);
        23. String access_token = jsonObject.getString("access_token");
        24. return access_token;
        } catch (Exception e) {
        1. System.err.printf("获取token失败!");
        2. e.printStackTrace(System.err);
        }
        return null;
        }

      }

2.人脸对比

  1. package org.fh.util;
  2. import java.util.*;
  3. import net.sf.json.JSONObject;
  4. /**
  5. * 说明:人脸对比
  6. * 作者:F-H
  7. * 官网:www.fhadmin.org
  8. */
  9. public class FaceMatch {
  10. public static String faceMatch(List<Object> list) {
  11. // 请求url
  12. String url = "https://aip.baidubce.com/rest/2.0/face/v3/match";
  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. }

发表评论

表情:
评论列表 (有 0 条评论,345人围观)

还没有评论,来说两句吧...

相关阅读

    相关 java使用人脸识别API

    随着人工智能和大数据分析技术越来越广泛,众多的生活场景都存在着这些技术的身影,比如像现在比较流行的人脸识别技术,其底层的算法实现的支撑,为众多的业务场景铺垫了基础,像支付宝的刷