調用百度sdk進行人臉的錄入,識別等操做。java
使用的是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; }