SpringBoot调阿里云人脸识别人脸对比接口

开发工具:IDEA2019.3
开发框架:SpringBoot2.2
数据库:Mysql
接口测试工具:swagger
阿里云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;
    }

在这里插入图片描述

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值