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

使用face++判断两张图片是否为同一人【以此为基础可分析归类自己的相册】

程序员文章站 2022-05-09 17:21:11
...

最近看相册,看到从11年以来很多的照片,想根据不同人来分类,然后发给好友。话不多说直接进入主题。

一、环境

  1. ide:idea
  2. jdk:1.7
  3. 人脸识别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就可信

使用face++判断两张图片是否为同一人【以此为基础可分析归类自己的相册】



相关标签: java 人脸识别