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;    }    }
(0)

相关推荐

  • 一晚上,搞出来一个微信订阅号鉴黄机器人

    领取大佬们推荐的学习资料 顾名思义,我们就是来做一个订阅号机器人,大致是这样一个过程 公众号接收用户消息 -> 微信平台发送消息给我们的服务器 -> 我们的服务器处理消息 -> 返回 ...

  • Java开发 API接口用magic-api会如何

    magic-api 是一个基于Java的接口快速开发框架,编写接口将通过magic-api提供的UI界面完成,自动映射为HTTP接口,无需定义Controller.Service.Dao.Mapper ...

  • CV之FC:基于API接口实现对明星、企业家人脸图片进行人脸预测(分类、性别、年龄、颜值)

    CV之FC:基于API接口实现对网上人脸图片.本地人脸图片进行人脸预测(分类.性别.年龄.颜值) 观看视频:CV之FC-基于API接口实现对明星.企业家人脸图片进行人脸预测(分类.性别.年龄.颜值) ...

  • 国际象棋云库API接口说明

    概述 国际象棋云库(简称'云库') API 接口分为两部分,访问云库,可以直接通过基于 HTTP 的 RESTful API 实现. 此外,在原有的 UCI 引擎通讯协议上扩展了云库相关的指令,云库. ...

  • 中国象棋云库API接口说明

    中国象棋云库API接口说明 概述 中国象棋云库(简称'云库') API 接口分为两部分,访问云库,可以直接通过基于 HTTP 的 RESTful API 实现. 此外,在原有的 UCI 引擎通讯协议上 ...

  • 盘点15个好用的API接口管理神器

    分布式实验室 1周前 如今,API已在软件.Web和移动应用程序开发领域无处不在,从企业内部到面向公众的应用以及与合作伙伴进行系统集成.通过使用API,开发人员可以创建满足各种客户需求的应用程序.而软 ...

  • IOT语义互操作性之API接口

    这个系列文章描述了一个单一的语义数据模型来支持物联网和建筑.企业和消费者的数据转换. 这种模型必须简单可扩展, 以便能够在各行业领域之间实现插件化和互操作性. 对于一个目前从事智能硬件的老码农,觉得这 ...

  • 微服务架构下的API接口驱动开发,设计和集成

    今天谈下在微服务架构下,接口设计和开发方面的思考. 对于微服务架构,SOA和Http Rest API接口设计,在我前面的头条文章中均有专门的说明,因此对于基础方面的解释在本文不再重复.对于今天要写的 ...

  • .NET Core 调用百度 PaddleOCR 识别图文

    1663372 dotNET跨平台 今天 了解 PaddleOCR 之前,首先了解一下 PaddlePaddle.飞桨(PaddlePaddle)以百度多年的深度学习技术研究和业务应用为基础,是中国首 ...

  • 全字段多条件搜索(api接口)

    近期在做项目时遇到了一个全表全字段多条件搜索的需求,在平时搜索最常见的就是 字段+like +'% 条件%'这种模式,但遇到多条件多字段时,这种就不适用了. 表字段已知,条件未知,条件数量未知,这种情 ...