百度在线手势识别

        最近一直在写关于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源码可留言获取。内部支持每天剩余测试数据统计,识别结果预览,视频预览等功能。

注:欢迎扫码关注

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