你知道吗?(十万个为什么….)
人脸识别API 包含有 :人脸检测,人脸对比,人脸查找,人脸库管理…
如果你还不熟悉 请移步到官方文档仔细阅读吧
API文档地址:http://ai.baidu.com/docs#/Face-Detect/top
那么今天荒墨给大家总结的 就是 人脸库管理 的核心类了~
赶紧贴上代码,马上分析~
1.将自己的accessToken填写在下方的变量中
2.用main方法测试你想要的方法
3.举例 新增人脸库 找到 addFace()方法 填写你的照片路径 执行OK 即注册成功
4.可以通过 用户组查询 删除 更新的操作
5.请详细了解下面代码注释内容 按照自己的一些业务方向 定义自己的接口~
package com.zfsoft.artificialIntelligence.faceRecognition.client;
import java.net.URLEncoder;
import com.baidu.aip.util.Base64Util;
import com.zfsoft.artificialIntelligence.util.FileUtil;
import com.zfsoft.artificialIntelligence.util.HttpUtil;
/**
* 人脸库管理 核心类方法
*
* 重要提示代码中所需工具类
* 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
*
* @author liyingming 荒墨丶迷失
* @data 2018-01-24
*/
public class FaceDataManageAPI {
//人脸注册 (人脸新增 )
static String addFaceUrl = “https://aip.baidubce.com/rest/2.0/face/v2/faceset/user/add”;
//人脸更新 (人脸修改 )
static String updateUrl = “https://aip.baidubce.com/rest/2.0/face/v2/faceset/user/update”;
//用户信息查询
static String getFaceUrl = “https://aip.baidubce.com/rest/2.0/face/v2/faceset/user/get”;
//删除单个用户
static String deleteUrl = “https://aip.baidubce.com/rest/2.0/face/v2/faceset/user/delete”;
//用于查询用户组的列表
static String getListUrl = “https://aip.baidubce.com/rest/2.0/face/v2/faceset/group/getlist”;
//组内用户列表查询
static String getusersUrl = “https://aip.baidubce.com/rest/2.0/face/v2/faceset/group/getusers”;
//组间复制用户
static String adduserUrl = “https://aip.baidubce.com/rest/2.0/face/v2/faceset/group/adduser”;
//组内删除用户
static String deleteuserUrl = “https://aip.baidubce.com/rest/2.0/face/v2/faceset/group/deleteuser”;
//注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
static String accessToken = “”;
//—————————-目前只有一个分组 (test_group_1)——每个用户命名为 (test_user_XX)——————–
/**
* 人脸注册
*
*/
public static String addFace() {
//用于从人脸库中新增用户,可以设定多个用户所在组,及组内用户的人脸图片
try {
//———测试 用本地文件路径————–
String filePath = “[本地文件路径]”;
byte[] imgData = FileUtil.readFileByBytes(filePath);
String imgStr = Base64Util.encode(imgData);
String imgParam = URLEncoder.encode(imgStr, “UTF-8”);
String param = “uid=” + “test_user_1”
//这个user_info 的规则可以自己定义
+ “&user_info=” + “荒漠丶迷失,123456789100,上海市徐汇区,12345678910”
//group_id 分组自己定义 最多100个分组
+ “&group_id=” + “test_group_1”
//image 图片数据
+ “&image=” + imgParam
//action_type 为 replace时,则每次注册时进行替换replace(新增或更新)操作,默认为append操作
+ “&action_type=” + “replace”;
String result = HttpUtil.post(addFaceUrl, accessToken, param);
System.out.println(result);
return result;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 人脸更新
*/
public static String update() {
// 针对一个uid执行更新操作,新上传的人脸图像将覆盖此uid原有所有图像
try {
// 本地文件路径
String filePath = “[本地文件路径]”;
byte[] imgData = FileUtil.readFileByBytes(filePath);
String imgStr = Base64Util.encode(imgData);
String imgParam = URLEncoder.encode(imgStr, “UTF-8”);
String param = “uid=” + “test_user_1” + “&images=” + imgParam + “,” + imgParam;
String result = HttpUtil.post(updateUrl, accessToken, param);
System.out.println(result);
return result;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 人脸删除
*/
public static String delete() {
// 用于从人脸库中删除一个用户
try {
String param = “uid=” + “test_user_1”;
String result = HttpUtil.post(deleteUrl, accessToken, param);
System.out.println(result);
return result;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 用户信息查询
*/
public static String getFace() {
// 用于查询人脸库中某用户的详细信息
try {
String param = “uid=” + “test_user_1”;
String result = HttpUtil.post(getFaceUrl, accessToken, param);
System.out.println(result);
return result;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 组列表查询
*/
public static String getList() {
// 用于查询用户组的列表
try {
String param = “start=” + 0 + “&end=” + 100;
String result = HttpUtil.post(getListUrl, accessToken, param);
System.out.println(result);
return result;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 组内用户列表查询
*/
public static String getUsers() {
// 用于查询指定用户组中的用户列表
try {
String param = “group_id=” + “test_group_1” + “&start=” + 0 + “&end=” + 100;
String result = HttpUtil.post(getusersUrl, accessToken, param);
System.out.println(result);
return result;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 组间复制用户
*/
public static String addUser() {
// 用于将已经存在于人脸库中的用户复制到一个新的组
// 说明:并不是向一个指定组内添加用户,而是直接从其它组复制用户信息 如果需要注册用户,请直接使用人脸注册接口
try {
String param = “uid=” + “test_user_1” + “&group_id=” + “test_group_2”;
String result = HttpUtil.post(adduserUrl, accessToken, param);
System.out.println(result);
return result;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 组内删除用户
*/
public static String deleteUser() {
// 用于将用户从某个组中删除,但不会删除用户在其它组的信息。
// 说明:当用户仅属于单个分组时,本接口将返回错误,请使用人脸删除接口
try {
String param = “uid=” + “test_user_5” + “&group_id=” + “test_group_2”;
String result = HttpUtil.post(deleteuserUrl, accessToken, param);
System.out.println(result);
return result;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
//基于main方法测试
FaceDataManageAPI.addFace();
}
}
今天的分享到这里 感谢大家~