基于百度人流量监测接口二次开发,一直想要将店里的萤石摄像头加上人流量监测,在node-red里操作有些麻烦,百度提供了java的调用方式.干脆自己花了点时间.用java写一个,只需传递图片的url就可返回人流量数据,并用sqllite存储每次识别的数据.
项目开源地址:HelloTheAsia/PeopleFlowStatistics (github.com)

一.申请百度的api接口调用权限

人流量统计_智能客流量统计分析方案-百度AI开放平台 (baidu.com)
这里博主使用的是静态人流量统计

二.使用docker部署

目前支持AMD64与ARM64架构

1
2
3
4
5
6
7
8
# 先创建pfs.db数据库
touch pfs.db
# docker启动,需要更改CLIENT_ID与CLIENT_SECRET
docker run -d -p 8310:8310 \-e CLIENT_ID=百度申请的CLIENT_ID \
-e CLIENT_SECRET=百度申请的CLIENT_SECRET \
-v ./pfs.db:/app/pfs.db \
--name=pfs \
registry.cn-hangzhou.aliyuncs.com/hiasia/people-flow-statistics

三.使用方法,直接调用api使用

http://部署的IP地址:8310/people-flow?imageUrl=图片的URL

  • 参数1:imageUrl
    • 可访问的图片url
  • 参数2:show
    • 参数为true或者false,默认为false,百度识别图片后会返回一个base64的标志图片.为true则会存储这张图片在数据库
  • 参数3:deviation
    • 这个为数字,校准量,默认为0.可能有些圆形的物体并非人,会被识别为人.输入此产生可以减去相对应的数值
    • 如果你没有传递deviation,返回PersonNum为-1,LogId为fail代表调用失败.请检查部署时的参数是否有误

四.数据库结构

image.png

五.玩法

  1. 可以统计图片中的人数.加上定时可以统计大概的人流量.
  2. 使用HomeAssistant,加上传感器.可以实现来人识别.识别人数>=1时再开灯.可大大降低误开的记录