欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-12 20:46:51
...

开发工具:IDEA2019.3
开发框架:SpringBoot2.2
数据库:nysql
接口测试工具:swagger UI
阿里云demo如下
SpringBoot调阿里云人脸识别人脸对比接口
SpringBoot调阿里云人脸识别人脸对比接口
和我之前调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>

这个识别接口,是上传两张照片然后比较它们的相似度,值得注意的是,这里SpringBoot调阿里云人脸识别人脸对比接口
这里的type有几种可选的类型
SpringBoot调阿里云人脸识别人脸对比接口
下面是我的代码
刚开始我用的是IDCARD,然后我上传的一个身份证反面照片和一个自己的生活照,结果让我傻眼了
SpringBoot调阿里云人脸识别人脸对比接口
SpringBoot调阿里云人脸识别人脸对比接口
SpringBoot调阿里云人脸识别人脸对比接口
是的,第一个相似度只有34(虽然自拍照开了美颜),又试了一次(以为是美颜的原因,关了美颜),也只有65,然后阿里的建议是要达到80才算是同一个人,当时就想不至于这么低吧,6-7年前的身份证(除了现在稍微长了的肉,肯定跟这个是没有关系的)。然后,仔细想想,也可能是我理解错了,把type改了,换成LIVE
SpringBoot调阿里云人脸识别人脸对比接口
改成LIVE后,没开美颜的相似度
SpringBoot调阿里云人脸识别人脸对比接口
开了美颜的相似度
SpringBoot调阿里云人脸识别人脸对比接口
这个结果差别有点大,嘿嘿,尴尬尴尬(美颜是个好东西)
SpringBoot调阿里云人脸识别人脸对比接口
总结: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;
    }

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

相关标签: Spring Boot java