百度人脸搜索的一次尝试(JAVA)

人脸识别可能是人工智能发展下,生活中最常见的应用之一,这也从一定程度上反映了人脸识别技术的成熟。百度云提供了人脸识别的API,可以免费试用。今天进行一次尝试。

第一步:注册和登陆

创建一个百度账号。登陆百度云平台,这里面用我们百度网盘的账号就可以了。

第二步:找到人脸识别服务并创建

百度人脸搜索的一次尝试(JAVA)_第1张图片

然后点击创建应用。

百度人脸搜索的一次尝试(JAVA)_第2张图片

百度人脸搜索的一次尝试(JAVA)_第3张图片

创建成功后,会有三个关键信息:APPID、APIKey、Secrect Key

 第三步:添加人脸

进入应用后,创建group和用户百度人脸搜索的一次尝试(JAVA)_第4张图片

那么现在人脸库中就有两张人脸了。

第四步:创建工程 与配置环境

配置JDK,maven就不说了。

创建一个maven工程、然后将百度的SDK添加进去,也就是在maven的pom文件中引入百度的包

       
            com.baidu.aip
            java-sdk
            4.12.0
        

第五步:编码


import com.baidu.aip.face.AipFace;
import com.baidu.aip.util.Base64Util;
import org.json.JSONObject;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;

public class FaceTest {
    //需要修改为自己的
    private static final String APP_ID = "XXXX";
    private static final String API_KEY = "XXXX";
    private static final String SECRET_KEY = "XXXx";

    static AipFace client = null;

    static {
        client = new AipFace(APP_ID, API_KEY, SECRET_KEY);
        // 可选:设置网络连接参数
        client.setConnectionTimeoutInMillis(2000);
        client.setSocketTimeoutInMillis(60000);
    }

    public static void main(String[] args) throws IOException {
        //BASE64Decoder decoder = new BASE64Decoder();
        String file1 = "/Users/yuchk/Desktop/haha.png";
        byte[] img2 = FileToByte(new File(file1));
        // 需要填写自己的groupIdList
        System.out.println(searchFace(img2, "car"));
    }
    private static String searchFace(byte[] arg0, String groupIdList) {
        String imgStr = Base64Util.encode(arg0);
        String imageType = "BASE64";
        HashMap options = new HashMap();
        options.put("quality_control", "NORMAL");
        options.put("liveness_control", "LOW");
        options.put("max_user_num", "1");
        JSONObject res = client.search(imgStr, imageType, groupIdList, options);
        return res.toString(2);
    }

    private static byte[] FileToByte(File file) throws IOException {
        // 将数据转为流
        InputStream content = new FileInputStream(file);
        ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
        byte[] buff = new byte[100];
        int rc = 0;
        while ((rc = content.read(buff, 0, 100)) > 0) {
            swapStream.write(buff, 0, rc);
        }
        // 获得二进制数组
        return swapStream.toByteArray();
    }
}

运行结果

 

百度人脸搜索的一次尝试(JAVA)_第5张图片

你可能感兴趣的:(软件工程师修炼日记,人脸识别,百度,java,人工智能)