人流统计模块讲解
我们使用onenet
提供的AI平台的接口
人体检测
能力介绍
接口能力:检测并定位图片中无遮挡的人体,返回人体位置和置信度(0~1),可实现多人体检测;
图片格式:现支持PNG、JPG、JPEG、BMP,不支持GIF图片;
图片大小:上传图片大小不超过2M;图片中识别的人体不被遮挡,人体区域高度120像素以上,宽度80像素以上;
业务应用:智慧零售人流量统计、人体跟踪、安防监控。
API调用方式
请求方式 |
POST |
url |
http://ai.heclouds.com:9090/v1/aiApi/picture/BODY_RECO |
http-header |
token : xxxxxxxxxxxxxxxxx //通过AI Key和Secret Key鉴权(推荐) |
request-body |
{ "picture": ["String"] //一张图片的base64图片编码 |
下面是python的示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| import requests import json import base64
url = 'http://ai.heclouds.com:9090/v1/aiApi/picture/BODY_RECO' headers ={ 'Content-Type':'application/json', 'token':'xxxxxxxxxxxxxxxxx(用户鉴权接口返回结果中的accessToken)' }
file = open('D:/Desktop/体验图片/03人体检测/body5.png','rb')
base64Str = base64.b64encode(file.read()).decode()
file.close()
data = { 'picture':[base64Str] }
response = requests.request("POST", url, headers=headers, data=json.dumps(data))
print(response.text)
|
返回示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| { "stateCode": "0x0000", //结果状态码,16进制。"0x0000":成功 "message": "success", //返回信息 "data": Array //JSON对象数组,每一个JSON对象表示一个人体,包含了人体在图片中的位置、大小,标签,置信度 } 例如: [ { //人体在图片中的位置、大小 "box": { "x": 50, "y": 270, "width": 795, "height": 978 }, //置信度(0~1) "confidence": 0.9998502731323242, //标签 "label": "person" } ] 注意: http错误码返回"401"时表示"未经授权",造成的原因有:未使用或使用的token不正确;使用的token已经超时失效。
|
代码说明
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| import requests import json import base64
aiKey = 'd071c2afa0f14fb28d40be114e524984' secretKey = '209e5e8fb0b64299b671cc8a0c3a3592'
def get_access_token(aikey, seckey): tkUrl = 'http://ai.heclouds.com:9090/v1/user/app/accessToken?aiKey=%s&secretKey=%s' % (aiKey, secretKey) tkheader = { "Content-Type" : "application/json" } r = requests.get(url=tkUrl, headers=tkheader).json() return r["data"]["accessToken"]
def getRes(): url = 'http://ai.heclouds.com:9090/v1/aiApi/picture/BODY_RECO' headers ={ 'Content-Type':'application/json', 'token': get_access_token(aiKey, secretKey) } file = open('1.png','rb') base64Str = base64.b64encode(file.read()).decode() file.close() data = { 'picture':[base64Str] } response = requests.request("POST", url, headers=headers, data=json.dumps(data)).json() return len(response["data"])
if __name__ == '__main__': getRes()
|
注释已经讲解的很清楚了。上一个函数是获得accessToken
的函数,下一个就是获取答案,由于答案是返回一个json数组,每一个元素就是一个人体,一个框框的信息。我们直接次len
函数获得数组的元素个数。我们就可以获得实时人数。