一、申请百度API人脸识别的使用权利
http://ai.baidu.com/tech/face(点击进入官方网站,然后找到产品服务-人脸识别)
二、注册百度账号,并且申请人脸识别的使用权(一般几分钟就可以了,不会太久),获取以下参数,为调用API做准备
AppID
|
API Key
|
Secret Key
|
---|
三、编写代码,调用获取token,详细操作可以查阅(https://ai.baidu.com/docs#/Face-Set/top)
package com;
import com.baidu.ai.aip.utils.Base64Util;
import com.baidu.ai.aip.utils.FileUtil;
import com.baidu.ai.aip.utils.HttpUtil;
import java.net.URLEncoder;
/**
* 人脸更新
*/
public class FaceUpdate {
/**
* 重要提示代码中所需工具类
* FileUtil,Base64Util,HttpUtil,GsonUtils请从
* https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72
* https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2
* https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3
* https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3
* 下载
*/
public static String update() {
// 请求url
String url = "https://aip.baidubce.com/rest/2.0/face/v2/faceset/user/update";
try {
// 本地文件路径
String filePath = "[本地文件路径]";
byte[] imgData = FileUtil.readFileByBytes(filePath);
String imgStr = Base64Util.encode(imgData);
String imgParam = URLEncoder.encode(imgStr, "UTF-8");
String filePath2 = "[本地文件路径]";
byte[] imgData2 = FileUtil.readFileByBytes(filePath2);
String imgStr2 = Base64Util.encode(imgData2);
String imgParam2 = URLEncoder.encode(imgStr2, "UTF-8");
String param = "uid=" + "test_user_5" + "&images=" + imgParam + "," + imgParam2;
// 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
String accessToken = "[调用鉴权接口获取的token]";
String result = HttpUtil.post(url, accessToken, param);
System.out.println(result);
return result;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
FaceUpdate.update();
}
}
四、获取token,在人脸库中对人脸进行注册,详细操作可以查阅(https://ai.baidu.com/docs#/Face-Set/top)
package com;
import java.net.URLEncoder;
public class FaceAdd {
public static String add(String img1 , String img2) {
String url = "https://aip.baidubce.com/rest/2.0/face/v2/faceset/user/add";
try {
String filePath = img1; //第一个图片文件的位置
byte[] imgData = FileUtil.readFileByBytes(filePath);
String imgStr = Base64Util.encode(imgData);
String imgParam = URLEncoder.encode(imgStr , "UTF-8");
String filePath2 = img2; //第二个图片文件的位置(此处可有可无,至少要上传一张,以此类推)
byte[] imgData2 = FileUtil.readFileByBytes(filePath2);
String imgStr2 = Base64Util.encode(imgData2);
String imgParam2 = URLEncoder.encode(imgStr2 , "UTF-8");
String param = "uid=" + "test_user_5" + "&user_info=" + "userInfo5" + "&group_id=" + "test_group_2" + "&images=" + imgParam + "," + imgParam2;
// 注意Param格式的编写,此处是最核心的内容,注意uid、user_info、group_id以及images的含义,详细信息看下图参数表,这里添加的图片数量可以自己权衡
String accessToken = Get_Access_Token.getAuth();
String result = HttpUtil.post(url , accessToken , param);
System.out.println(result);
return result;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
FaceAdd.add("F:/img/1.jpg" , "F:/img/2.jpg");//人脸图片的存储地址
}
}
五、除了人脸注册之外,百度API还提供了人脸更新、人脸删除等操作,具体使用方式与人脸注册基本一直,具体的JAVA代码可以查阅(
https://ai.baidu.com/docs#/Face-Set/top),所有的代码可以直接从技术文档中复制粘贴到自己的编译器中,我们所需要做的很多时候只是修改其中个别的参数,如文件的实际存储路径等,或者增添一些其余操作的代码即可。