最近一直在寫關於Android基礎控件的內容,今天我們來搞一下有趣一點的東西——百度在線手勢識別。百度在線手勢識別目前支持24種手勢,具體有哪些,可以去官方網站查詢相關的API文檔。支持上傳圖片或者byte[]數據進行識別。那下面就來看看如何實現有趣的手勢識別吧。
1,註冊賬號,登錄控制檯
我想,基本上每個開發者都有百度賬號,沒有的註冊一個,使用該賬號登錄百度開發者平臺中的控制檯。進入之後是如下畫面,並選擇到“人體分析”
2,獲取數據
選擇了“人體分析”之後進入如下畫面,點擊紅色框中的創建應用,獲取APP_ID,API_KEY,SECRET_KEY。
點擊“創建應用”之後,需要編輯一下應用的基本信息,然後就可以獲取上面的三個數據了:
3,SDK下載
在上面“應用列表”的左側,我們先找到“SDK下載”選項
選擇如下的SDK(java)進行下載即可
4,Demo編寫
目前百度在線手勢識別提供有免費版本,每天有50000次的免費體驗,限制是併發量小於等於2,那我們編寫主要還是參考上圖中“使用說明”對應的文檔資料。
第一步:初始化接口
client = new AipBodyAnalysis(app_id, api_key, secret_key);
其中,client就是我們的AipBodyAnalysis客戶端,三個參數就是我們剛剛創建應用獲取的數據。
第二步:調用接口,獲取數據
//方式1
JSONObject json = client.gesture(imagePath, new HashMap<String, String>());
//方式2
JSONObject json = client.gesture(bytes, new HashMap<String, String>());
第三步:解析數據
首先看一下數據格式:
{
"log_id": 4466502370458351471,
"result_num": 2,
"result": [{
"probability": 0.9844077229499817,
"top": 20,
"height": 156,
"classname": "Face",
"width": 116,
"left": 173
},
{
"probability": 0.4679304957389832,
"top": 157,
"height": 106,
"classname": "Heart_2",
"width": 177,
"left": 183
}]
}
我們只需要獲取“result”字段對應的數據即可,裏面的“classname”字段對應的就是手勢的名稱。
JSONArray array = (JSONArray) jsonObject.get("result");
if (array != null && array.length() > 0) {
StringBuilder builder = new StringBuilder();
for (int i = 0; i < array.length(); i++) {
JSONObject json = (JSONObject) array.get(i);
builder.append(json.getString("classname") + ",");
}
Log.e(TAG, "識別到手勢:" + builder.toString());
}
當然在這之前,需要把下載的jar包導入到我們的工程中。當然也可以通過其他方式添加依賴,具體參見使用說明文檔(重要)
這樣,我們的工作就完成了,下面看看實際的使用效果怎樣。
Demo源碼可留言獲取。內部支持每天剩餘測試數據統計,識別結果預覽,視頻預覽等功能。
注:歡迎掃碼關注