第二期【百度大脑新品体验】手势识别
wangwei8638 发布于2019-05-10 08:35 浏览:6840 回复:22
1
收藏
最后编辑于2020-01-15

手势识别应用于智能家电、家用机器人、可穿戴、儿童教具等硬件设备,通过用户的手势控制对应的功能,人机交互方式更加智能化、自然化。本文主要介绍手势识别API的调用使用攻略。

一.平台接入

此步骤比较简单,不多阐述。可参照之前文档:

https://ai.baidu.com/forum/topic/show/943028

二.分析接口文档

1. 接口API

https://ai.baidu.com/docs#/Body-API/02f6ce24

   (1)接口描述

识别图片中的手势类型,返回手势名称、手势矩形框、概率分数,可识别24种常见手势,适用于手势特效、智能家居手势交互等场景。

支持的24类手势列表:拳头、OK、祈祷、作揖、作别、单手比心、点赞、Diss、我爱你、掌心向上、双手比心(3种)、数字(9种)、Rock、竖中指。

除识别手势外,若图像中检测到人脸,会同时返回人脸框位置。

 (2)请求说明

需要用到的信息有:

请求URL:

https://aip.baidubce.com/rest/2.0/image-classify/v1/gesture

Header格式:Content-Type:application/x-www-form-urlencoded

(3)返回示例

    

   {

        "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

    }]

    }

2.获取access_token

#client_id 为官网获取的AK, client_secret 为官网获取的SK
client_id =【百度云应用的AK】
client_secret =【百度云应用的SK】

#获取token
def get_token():
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + client_id + '&client_secret=' + client_secret
request = urllib.request.Request(host)
request.add_header('Content-Type', 'application/json; charset=UTF-8')
response = urllib.request.urlopen(request)
token_content = response.read()
if token_content:
token_info = json.loads(token_content.decode("utf-8"))
token_key = token_info['access_token']
return token_key


三.识别结果

返回结果:

{'log_id': 288214665005727209,

 'result': [{'classname': 'Five',

             'height': 253,

             'left': 537,

             'probability': 0.8713970184326172,

             'top': 344,

             'width': 238},

            {'classname': 'Face',

             'height': 237,

             'left': 808,

             'probability': 0.7121545076370239,

             'top': 164,

             'width': 208}],

 'result_num': 2}

处理结果方面:可以看出,检测出手势为Five,以及识别人脸并标出位置。

处理速度方面:处理时间4.80s,时间较长。

四.源码共享

# -*- coding: utf-8 -*-

#!/usr/bin/env python



import os

import requests

import base64

import json

from pprint import pprint

import time

#client_id 为官网获取的AK, client_secret 为官网获取的SK

api_key = '**************************'

secret_key = '******************************'



class LandmarkRecognizer(object):

    def __init__(self, api_key, secret_key):

        self.access_token = self._get_access_token(api_key=api_key, secret_key=secret_key)

        self.API_URL = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/gesture' + '?access_token=' \

                      + self.access_token

    #获取token

    @staticmethod

    def _get_access_token(api_key, secret_key):

        api = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials' \

            '&client_id={}&client_secret={}'.format(api_key, secret_key)

        rp = requests.post(api)

        if rp.ok:

            rp_json = rp.json()

#            print(rp_json['access_token'])

            return rp_json['access_token']

        else:

            print('=> Error in get access token!')

    def get_result(self, params):

        rp = requests.post(self.API_URL, data=params)

        if rp.ok:

#            print('=> Success! got result: ')

            rp_json = rp.json()

            pprint(rp_json)

            return rp_json

        else:

            print('=> Error! token invalid or network error!')

            print(rp.content)

            return None

    #手势识别

    def detect(self, img_path):

        f = open(img_path, 'rb')

        strover = '识别结果:'

        img_str = base64.b64encode(f.read())

        params = {'image': img_str}

        tic = time.clock()

        rp_json = self.get_result(params)

        toc = time.clock()

        print(strover)

        print('花费时长: '+'%.2f'  %(toc - tic) +' s')



if __name__ == '__main__':

    recognizer = LandmarkRecognizer(api_key, secret_key)

    img = 'F:\paddle\ss5.png'

    recognizer.detect(img)
收藏
点赞
1
个赞
共22条回复 最后由大手拉小手0123回复于2020-01-15 23:59
#23大手拉小手0123回复于2020-01-15 23:59:49
#22 wangwei8638回复
需要制定行业标准,现在还没有

那等未来肯定行

0
#22wangwei8638回复于2019-12-30 09:02:54
#21 大手拉小手0123回复
这个就比较复杂了

需要制定行业标准,现在还没有

0
#21大手拉小手0123回复于2019-12-29 22:59:30
#20 wangwei8638回复
需要对更多手势含义进行定义

这个就比较复杂了

0
#20wangwei8638回复于2019-12-28 17:06:18
#19 大手拉小手0123回复
发现坏人吧,用到公共changhe

需要对更多手势含义进行定义

0
#19大手拉小手0123回复于2019-12-28 15:00:20
#17 爱摄影cshaitao回复
楼主加油, 以后应用到监控中去,发现乱人只需要做个手势就能报警.

发现坏人吧,用到公共changhe

0
#18worddict回复于2019-12-27 13:22:35
#13 小雨青青润无声回复
以后可以不用学手语,也能跟聋哑人交流了

这倒是个好主意

0
#17爱摄影cshaitao回复于2019-12-16 16:31:29

楼主加油,

以后应用到监控中去,发现乱人只需要做个手势就能报警.

0
#16大手拉小手0123回复于2019-10-29 17:16:51
#15 worddict回复
楼主很勤奋啊

嗯产出一直很多

0
#15worddict回复于2019-09-27 20:19:18

楼主很勤奋啊

0
#14wangwei8638回复于2019-09-27 11:08:20
#13 小雨青青润无声回复
以后可以不用学手语,也能跟聋哑人交流了

确实很智能

0
#13小雨青青润无声回复于2019-09-27 10:34:42
#7 wangwei8638回复
百度做了手语翻译

以后可以不用学手语,也能跟聋哑人交流了

0
#12小雨青青润无声回复于2019-09-27 10:30:41
#2 大手拉小手0123回复
感觉你很厉害

确实,楼主总有新作品发表

0
#11wangwei8638回复于2019-09-27 08:44:07
#10 大手拉小手0123回复
这对于残疾人来说非常有帮助

没错

0
#10大手拉小手0123回复于2019-09-27 08:05:46
#9 wangwei8638回复
手势识别

这对于残疾人来说非常有帮助

0
#9wangwei8638回复于2019-08-29 09:37:49
#8 大手拉小手0123回复
手语翻译应该算那个技术领悟

手势识别

0
#8大手拉小手0123回复于2019-08-28 17:33:27
#7 wangwei8638回复
百度做了手语翻译

手语翻译应该算那个技术领悟

0
#7wangwei8638回复于2019-08-10 17:01:39
#6 rose20135188回复
有人研究手势识别用于聋哑教育的没有?

百度做了手语翻译

0
#6rose20135188回复于2019-08-10 16:56:13

有人研究手势识别用于聋哑教育的没有?

0
#5wangwei8638回复于2019-08-08 21:40:03
#4 rose20135188回复
楼主加油,

大家就一起来

0
#4rose20135188回复于2019-08-04 21:09:38

楼主加油,

0
TOP
切换版块