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; } }
黄山市民网:https://www.huangshanshimin.com/