百度在線手勢識別

        最近一直在寫關於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源碼可留言獲取。內部支持每天剩餘測試數據統計,識別結果預覽,視頻預覽等功能。

注:歡迎掃碼關注

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章