使用face++判断两张图片是否为同一人【以此为基础可分析归类自己的相册】
程序员文章站
2022-05-09 17:21:11
...
最近看相册,看到从11年以来很多的照片,想根据不同人来分类,然后发给好友。话不多说直接进入主题。
一、环境
- ide:idea
- jdk:1.7
- 人脸识别api:face++
二、
首先注册face++账号(使用百度、阿里的也可以,此篇是用的face++),face++地址为https://www.faceplusplus.com.cn/,进入控制台-管理-应用管理,建立你的api_key。
打开idea,建立一个新工程或者就在test里面建立一个测试(我就是直接建立的测试),然后就是代码了
@org.junit.Test
public void 人脸识别() throws Exception {
StringBody apiKey = new StringBody("你的key",ContentType.TEXT_PLAIN);
StringBody apiSecret = new StringBody("你的secret",ContentType.TEXT_PLAIN);
CloseableHttpClient closeableHttpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost("https://api-cn.faceplusplus.com/facepp/v3/compare");
FileBody fileBody1 = new FileBody(new File("人脸1"));
FileBody fileBody2 = new FileBody(new File("人脸2"));
HttpEntity reqEntity = MultipartEntityBuilder.create().
addPart("api_key",apiKey).
addPart("api_secret",apiSecret).
addPart("image_file1",fileBody1).
addPart("image_file2",fileBody2).
build();
httpPost.setEntity(reqEntity);
try{
CloseableHttpResponse execute = closeableHttpClient.execute(httpPost);
if(execute.getStatusLine().getStatusCode()==200){
JSONObject resultObject = JSONObject.parseObject(EntityUtils.toString(execute.getEntity()));
if(resultObject.getFloat("confidence")>80){
System.out.println("同一人");
}
else{
System.out.println("不是同一人");
}
System.out.printf("confidence:%f,thresholds:%s", resultObject.getFloat("confidence"),resultObject.getString("thresholds"));
}
else{
String s = EntityUtils.toString(execute.getEntity());
System.out.println(s);
}
}
catch (Exception e){
e.printStackTrace();
}
finally {
closeableHttpClient.close();
}
}
返回的confidence为face++返回的置信度,我设置的大于80就可信