1.注册百度账号,创建应用获取相关授权
#百度人脸认证
BAIDU_APPID
BAIDU_APIKEY
BAIDU_SECRETKEY
2.pom文件引入jar包
<!-- 百度人脸对比 -->
<dependency>
<groupId>com.baidu.aip</groupId>
<artifactId>java-sdk</artifactId>
<version>4.12.0</version>
</dependency>
3.创建工厂,获取百度调用的AipFace实例
public class BaiduClientFactory {
private static AipFace aipClient = null;
private BaiduClientFactory() {
}
public static AipFace getInstance() {
if (aipClient == null) {
//这样初始化实例,默认就可以获取到token,不用单独请求
aipClient = new AipFace(BAIDU_APPID,BAIDU_APIKEY, BAIDU_SECRETKEY);
}
return aipClient;
}
}
4.相关参数和返回值的实体类
4.1调用接口返回的参数
public class MatchResultBean {
private BaiduResultBean result;//返回对比结果
private Long log_id;
private String error_msg;
private Integer cached;
private Integer error_code;//0请求成功
private Long timestamp;
public BaiduResultBean getResult() {
return result;
}
public void setResult(BaiduResultBean result) {
this.result = result;
}
public Long getLog_id() {
return log_id;
}
public void setLog_id(Long log_id) {
this.log_id = log_id;
}
public String getError_msg() {
return error_msg;
}
public void setError_msg(String error_msg) {
this.error_msg = error_msg;
}
public Integer getCached() {
return cached;
}
public void setCached(Integer cached) {
this.cached = cached;
}
public Integer getError_code() {
return error_code;
}
public void setError_code(Integer error_code) {
this.error_code = error_code;
}
public Long getTimestamp() {
return timestamp;
}
public void setTimestamp(Long timestamp) {
this.timestamp = timestamp;
}
}
4.2 MatchResultBean 中的BaiduResultBean;
public class BaiduResultBean {
private Double score;//对比的分数
private List<FaceListBean> face_list;//人脸照片id
public Double getScore() {
return score;
}
public void setScore(Double score) {
this.score = score;
}
public List<FaceListBean> getFace_list() {
return face_list;
}
public void setFace_list(List<FaceListBean> face_list) {
this.face_list = face_list;
}
}
4.3 BaiduResultBean 中的FaceListBean
public class FaceListBean {
private String face_token;
public String getFace_token() {
return face_token;
}
public void setFace_token(String face_token) {
this.face_token = face_token;
}
}
4.4自定义Service,用与请求对比接口
public class BaiduService {
/**
* 对比人脸
* @param para 参数
* @return 对比结果
*/
public static String match(MatchParaBean para){
AipFace client = BaiduClientFactory.getInstance();
// image1/image2也可以为url或facetoken, 相应的imageType参数需要与之对应。
MatchRequest req1 = new MatchRequest(para.getImageUrl1(), "URL");//将RUL换成,BASE64 可以直接传base64字符串
MatchRequest req2 = new MatchRequest(para.getImageUrl2(), "URL");
ArrayList<MatchRequest> requests = new ArrayList<MatchRequest>();
requests.add(req1);
requests.add(req2);
JSONObject res = client.match(requests);
return res.toString(2);//json格式缩进2个字符
}
}
5.认证结果
将返回的json转成MatchResultBean ,相似度为 score。
可以设置>80 为同一个人 认证通过。