調用百度sdk進行人臉的錄入,識別等操作。
使用的是java SDK ,這里給出說明文檔地址:http://ai.baidu.com/docs#/BodyAnalysis-Java-SDK/top
這里貼出部分代碼,參數參考說明文檔即可,所有增刪改查大多相同的做法。
//網絡申請調用函數進行人臉識別
new Thread(new Runnable() {
public void run() {
// 初始化一個AipFace
AipFace client=new AipFace("申請后分配的的APPID","申請后分配的Api key","申請后分配的Secret key");
// 傳入可選參數調用接口
HashMap<String, String> options = new HashMap<String, String>();
options.put("user_info", user_info);
options.put("quality_control", "NORMAL");
options.put("liveness_control", "LOW");
//image取決於image_type參數,傳入BASE64字符串或URL字符串或FACE_TOKEN字符串,我這里傳入BASE64字符串
String image = result;
String imageType = "BASE64";
String groupId = groupid;
String userId = id;
/* 檢測人臉是否存在
* 存在,返回該人臉已經存在
* 不存在,即插入*/
// 傳入可選參數調用接口
HashMap<String, String> options1 = new HashMap<String, String>();
options1.put("quality_control", "NORMAL");
options1.put("liveness_control", "LOW");
options1.put("max_user_num", "1");
//從指定的group中進行查找 用逗號分隔,上限20個
String groupIdList = groupid;
//這里對人臉先檢索,是否已經錄入,設置判定條件為返回score大於80即代表同一個人
res1 = client.search(result, imageType, groupIdList, options);
if(getScore(res1)>80) {
Looper.prepare();
Toast.makeText(InputActivity.this, "該人臉已存在!", Toast.LENGTH_SHORT).show();
Looper.loop();
}else{
// 人臉注冊,返回代碼0,即為錄入成功
JSONObject res = client.addUser(image, imageType, groupId, userId, options);
if(getCode(res).equals("0")){
Looper.prepare();
Toast.makeText(InputActivity.this, "錄入成功!", Toast.LENGTH_SHORT).show();
Looper.loop();
} else {
Looper.prepare();
Toast.makeText(InputActivity.this, "換個姿勢,再試試吧", Toast.LENGTH_SHORT).show();
Looper.loop();
}
}}).start();
//解析返回的人臉識別結果,返回識別分數,識別大於80則能錄入
public float getScore(JSONObject res){
try{
JSONObject js = new JSONObject(res.optString("result"));
JSONArray rs = new JSONArray(js.optString("user_list"));
score =(float) rs.optJSONObject(0).optDouble("score");
}catch (Exception e){
e.printStackTrace();
}
return score;
}

