基于JAVA平台使用百度API管理人脸库

一、申请百度API人脸识别的使用权利

      http://ai.baidu.com/tech/face(点击进入官方网站,然后找到产品服务-人脸识别)

二、注册百度账号,并且申请人脸识别的使用权(一般几分钟就可以了,不会太久),获取以下参数,为调用API做准备

AppID
API Key
Secret Key


三、编写代码,调用获取token,详细操作可以查阅(https://ai.baidu.com/docs#/Face-Set/top

package com;

import com.baidu.ai.aip.utils.Base64Util;
import com.baidu.ai.aip.utils.FileUtil;
import com.baidu.ai.aip.utils.HttpUtil;

import java.net.URLEncoder;

/**
* 人脸更新
*/
public class FaceUpdate {

    /**
    * 重要提示代码中所需工具类
    * FileUtil,Base64Util,HttpUtil,GsonUtils请从
    * https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72
    * https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2
    * https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3
    * https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3
    * 下载
    */
    public static String update() {
        // 请求url
        String url = "https://aip.baidubce.com/rest/2.0/face/v2/faceset/user/update";
        try {
            // 本地文件路径
            String filePath = "[本地文件路径]";
            byte[] imgData = FileUtil.readFileByBytes(filePath);
            String imgStr = Base64Util.encode(imgData);
            String imgParam = URLEncoder.encode(imgStr, "UTF-8");

            String filePath2 = "[本地文件路径]";
            byte[] imgData2 = FileUtil.readFileByBytes(filePath2);
            String imgStr2 = Base64Util.encode(imgData2);
            String imgParam2 = URLEncoder.encode(imgStr2, "UTF-8");

            String param = "uid=" + "test_user_5" + "&images=" + imgParam + "," + imgParam2;

            // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
            String accessToken = "[调用鉴权接口获取的token]";

            String result = HttpUtil.post(url, accessToken, param);
            System.out.println(result);
            return result;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    public static void main(String[] args) {
        FaceUpdate.update();
    }
}

四、获取token,在人脸库中对人脸进行注册,详细操作可以查阅(https://ai.baidu.com/docs#/Face-Set/top

package com;

import java.net.URLEncoder;

public class FaceAdd {
      
	public static String add(String img1 , String img2) {
		String url = "https://aip.baidubce.com/rest/2.0/face/v2/faceset/user/add";
		try {
			String filePath = img1;  //第一个图片文件的位置
			byte[] imgData = FileUtil.readFileByBytes(filePath);
			String imgStr = Base64Util.encode(imgData);
			String imgParam = URLEncoder.encode(imgStr , "UTF-8");
			
			String filePath2 = img2;  //第二个图片文件的位置(此处可有可无,至少要上传一张,以此类推)
			byte[] imgData2 = FileUtil.readFileByBytes(filePath2);
			String imgStr2 = Base64Util.encode(imgData2);
			String imgParam2 = URLEncoder.encode(imgStr2 , "UTF-8");
			
			String param = "uid=" + "test_user_5" + "&user_info=" + "userInfo5" + "&group_id=" + "test_group_2" + "&images=" + imgParam + "," + imgParam2;		
			// 注意Param格式的编写,此处是最核心的内容,注意uid、user_info、group_id以及images的含义,详细信息看下图参数表,这里添加的图片数量可以自己权衡
		    String accessToken = Get_Access_Token.getAuth();
		    String result = HttpUtil.post(url , accessToken , param);
		    System.out.println(result);
		    return result;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	
	public static void main(String[] args) {
		FaceAdd.add("F:/img/1.jpg" , "F:/img/2.jpg");//人脸图片的存储地址
	}
}
五、除了人脸注册之外,百度API还提供了人脸更新、人脸删除等操作,具体使用方式与人脸注册基本一直,具体的JAVA代码可以查阅( https://ai.baidu.com/docs#/Face-Set/top),所有的代码可以直接从技术文档中复制粘贴到自己的编译器中,我们所需要做的很多时候只是修改其中个别的参数,如文件的实际存储路径等,或者增添一些其余操作的代码即可。

猜你喜欢

转载自blog.csdn.net/BTBO_/article/details/79933968