• 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) {
            // 请求url
            String 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;
        }
        
    }


  • 相关阅读:
    0909 谈谈我对操作系统的理解
    实验四 主存空间的分配和回收模拟
    12.03进程调度实验点评
    实验三进程调度实验
    实验二 作业调度模拟程序编写
    实验一 DOS命令解释程序的编写
    0909 随笔第一季
    实验四 主存空间的分配和回收模拟
    实验三 进程调度模拟实验
    实验二 作业调度模拟实验
  • 原文地址:https://www.cnblogs.com/teacher11/p/14964357.html
Copyright © 2020-2023  润新知