SpringBoot调阿里云人脸识别人脸对比接口
程序员文章站
2022-07-12 20:46:51
...
开发工具:IDEA2019.3
开发框架:SpringBoot2.2
数据库:nysql
接口测试工具:swagger UI
阿里云demo如下
和我之前调OCR身份证识别类似,也有StringUtils工具类,和一些依赖,这个是需要的依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.aliyun.api.gateway</groupId>
<artifactId>java.demo</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.15</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.2.1</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
<version>9.3.7.v20160115</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.5</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
这个识别接口,是上传两张照片然后比较它们的相似度,值得注意的是,这里
这里的type有几种可选的类型
下面是我的代码
刚开始我用的是IDCARD,然后我上传的一个身份证反面照片和一个自己的生活照,结果让我傻眼了
是的,第一个相似度只有34(虽然自拍照开了美颜),又试了一次(以为是美颜的原因,关了美颜),也只有65,然后阿里的建议是要达到80才算是同一个人,当时就想不至于这么低吧,6-7年前的身份证(除了现在稍微长了的肉,肯定跟这个是没有关系的)。然后,仔细想想,也可能是我理解错了,把type改了,换成LIVE
改成LIVE后,没开美颜的相似度
开了美颜的相似度
这个结果差别有点大,嘿嘿,尴尬尴尬(美颜是个好东西)
总结:1.用的时候要先把工具包下载到本地
2.相关依赖配好
3.理解type各个类型的用法,避免尴尬,为了准确度,谨慎开美颜
(这里的type,我也只弄清楚两个,IDCARD是两张图片都传身份证带照片那一面的照片对比
LIVE,可以是一张身份证,一张自拍/ 两张自拍之类的,其它type我也没有测过)
贴一下源码
@RequestMapping(value = "face",method = RequestMethod.POST)
private JSONObject faceRate(MultipartFile file, MultipartFile face) {
String srca = "";
String srcb = "";
JSONObject object = new JSONObject();
try {
BASE64Encoder encoder = new BASE64Encoder();
// 通过base64来转化图片
srca = (encoder.encode(file.getBytes())).replaceAll("\r\n", "");
srcb = (encoder.encode(face.getBytes())).replaceAll("\r\n", "");
String host = "https://face.xiaohuaerai.com";
String path = "/face";
String method = "POST";
String appcode = "你的APPCODE";
Map<String, String> headers = new HashMap<String, String>();
//最后在header中的格式(中间是英文空格)为Authorization:APPCODE 12345679
headers.put("Authorization", "APPCODE " + appcode);
//根据API的要求,定义相对应的Content-Type
headers.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
Map<String, String> querys = new HashMap<String, String>();
Map<String, String> bodys = new HashMap<String, String>();
bodys.put("srca", srca);
bodys.put("srcb", srcb);
bodys.put("type", "LIVE");
HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys);
String msg = new String(EntityUtils.toString(response.getEntity()).getBytes(), "UTF-8");
object = JSONObject.parseObject(msg);
} catch (Exception e) {
e.printStackTrace();
}
return object;
}
上一篇: vscode Path Intellisense插件问题
下一篇: 基于face++的人脸检测(一)