欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java 调用百度人脸对比api接口

程序员文章站 2022-08-05 23:27:27
​ 1. 获取token package org.fh.util; import org.json.JSONObject; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURL ......

 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;
    }

}

 

java 调用百度人脸对比api接口

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;
    }
    
}

 

java 调用百度人脸对比api接口