zoukankan      html  css  js  c++  java
  • java调用face++人脸检测和分析接口

    import java.io.*;
    import java.util.Map;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.nio.file.StandardCopyOption;
    import java.net.URL;
    
    import org.apache.http.HttpEntity;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.entity.ContentType;
    import org.apache.http.entity.mime.MultipartEntityBuilder;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.util.EntityUtils;
    
    public class FaceDetect {
        public static void main(String[] args) throws Exception {
            String urlpath = "/Users/sunxianyan/Desktop/test/input.csv";
            File urlcsv = new File (urlpath);
            BufferedReader bufferedReader = new BufferedReader (new FileReader (urlpath));
            String line = null;
            while ((line = bufferedReader.readLine ()) != null) {
                String[] item = line.split (",");
                String url = "https://api-cn.faceplusplus.com/facepp/v3/detect";
    
                HashMap<String, String> map = new HashMap<> ();
                map.put ("api_key", "***");
                map.put ("api_secret", "***");
                map.put ("return_landmark", "1");
                map.put ("return_attributes", "gender,age,smiling,headpose,facequality,blur,eyestatus,emotion,ethnicity,beauty,mouthstatus,eyegaze,skinstatus");
    
                HashMap<String, byte[]> byteMap = new HashMap<> ();
                downloadByNIO2 (item[0], urlcsv.getParent () + File.separator + "temp", item[0].substring (item[0].lastIndexOf ("/") + 1));
                File file = new File (urlcsv.getParent () + File.separator + "temp" + File.separator + item[0].substring (item[0].lastIndexOf ("/") + 1));
    
                detectFace(url, map, file);
            }
        }
    
        protected static void detectFace(String url, HashMap<String, String> map, File file) throws Exception {
    
            CloseableHttpClient client = HttpClients.createDefault();
            HttpPost post = new HttpPost(url);
    
            MultipartEntityBuilder builder = MultipartEntityBuilder.create();
    
            Iterator iter = map.entrySet ().iterator ();
            while (iter.hasNext ()) {
                Map.Entry<String, String> entry = (Map.Entry) iter.next ();
                String key = entry.getKey ();
                String value = entry.getValue ();
                builder.addTextBody(key, value);
            }
            builder.addBinaryBody("image_file", file, ContentType.MULTIPART_FORM_DATA, file.getName());
    
            HttpEntity multipart = builder.build();
            post.setEntity(multipart);
    
            CloseableHttpResponse response = client.execute(post);
            HttpEntity responseEntity = response.getEntity();
            String sResponse=EntityUtils.toString(responseEntity, "UTF-8");
            System.out.println("Post 返回结果"+sResponse);
        }
    
        //图片链接下载
        public static void downloadByNIO2(String url, String saveDir, String fileName) {
            try (InputStream ins = new URL (url).openStream ()) {
                Path target = Paths.get (saveDir, fileName);
                Files.createDirectories (target.getParent ());
                Files.copy (ins, target, StandardCopyOption.REPLACE_EXISTING);
            } catch (IOException e) {
                e.printStackTrace ();
            }
        }
    }
  • 相关阅读:
    defineProperty的使用
    js题库全集
    如何将多个文件夹中的文件合并到一个文件夹中
    CYQ.Data V5 MDataTable 专属篇介绍
    读取和写入配置文件内容的方法
    面对代码中过多的if...else的解决方法
    SQL语句--删除掉重复项只保留一条
    获取当前时间
    Stopwatch 类用于计算程序运行时间
    正则表达式手册
  • 原文地址:https://www.cnblogs.com/yangyuxiaozi/p/11244267.html
Copyright © 2011-2022 走看看