前言:人数统计可带来的若干益处,包括通过做出明智的楼宇自动化决策获得成本节约、增加在场人数舒适度以及进行高效人数统计实施的多种方法。用户可以在掌握监控区域实时动态信息的同时,及时得到现场准确的人数和人群流量数据,有利于管理单位更高效的组织工作,它可与第三方软件系统进行集成,为科学决策提供数据支持。
人数统计是大型商场、购物中心、连锁店、机场、车站、博物馆、展览馆等公共场所在管理和决策方面不可缺少的数据。对于零售业而言,人流量更是非常基础的指标。因其与销售量直接的正比关系,人们对人流量计数数据的重视由来已久。
例如,在美国,HVAC 空气流量根据 OSHA(职业安全与健康管理局)标准进行调节,它与房间能够容纳的最多人数相关联。因此,如果没有传感器,房间就必须根据它能容纳的最多人数(最大座位容量)在工作时间内通风,这势必会浪费大量的能源。在场感应系统可以精确地计算人数,并根据实际在场人数准确调节 HVAC 空气流量
- 今天为大家介绍百度AI下的人流统计(静态人数)接口调用示例代码(邀测接口需要单独申请)
--------------------------------------------------分割线--------------------------------------------------
- 人流统计(静态人数)示例代码
package com.xs.image;
import java.net.URLEncoder;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.xs.util.baidu.Base64Util;
import com.xs.util.baidu.FileUtil;
import com.xs.util.baidu.HttpUtil;
/**
* 人流统计-JavaAPI示例代码
* @author 小帅丶
* @date 2018年3月30日
*/
public class BodyNumSample {
//接口地址
private static final String BODY_NUM = "https://aip.baidubce.com/rest/2.0/image-classify/v1/body_num";
//更换为自己应用的AccessToken
static String token= "自己应用的AccessToken";
//调用示例代码
public static void main(String[] args) {
//图片本地路径
String imagePath = "图片本地路径";
String result = CountBodyNum(imagePath, token);
JSONObject jsonObject = JSON.parseObject(result);
//拿到接口返回的渲染图片的base64数据
String image = jsonObject.getString("image");
//建议使用JDK1.8以上 来使用自带的BASE64Decoder
BASE64Decoder decoder = new BASE64Decoder();
byte [] imageByte = decoder.decodeBuffer(image);
System.out.println("图中的人脸个数为:"+jsonObject.getString("person_num"));
//对图片进行保存操作
OutputStream outputStream = new FileOutputStream("G:/mallrender.jpg");
InputStream inputStream = new ByteArrayInputStream(imageByte);
byte[] buff = new byte[1024];
int len = 0;
while((len=inputStream.read(buff))!=-1){
outputStream.write(buff, 0, len);
}
inputStream.close();
outputStream.close();
}
/**
* 对于输入的一张图片(可正常解码,且长宽比适宜),识别和统计图像中的人体个数,以俯拍角度为主要识别视角,支持特定框选区域的人数统计,并可以输出渲染图片(人体头顶热力图)
* @param path 图片路径
* @param token AccessToken
* @return
*/
public static String CountBodyNum(String path,String token) {
String result="";
try {
String filePath = path;
byte[] imgData = FileUtil.readFileByBytes(filePath);
String imgStr = Base64Util.encode(imgData);
String imgParam = URLEncoder.encode(imgStr, "UTF-8");
//image图像数据+show是否输出渲染的图片,默认不返回,选true时返回渲染后的图片(base64),其它无效值或为空则默认false
String param = "image=" + imgParam+"&show=true";
result = HttpUtil.post(BODY_NUM, token, param);
} catch (Exception e) {
result = e.getMessage();
}
return result;
}
- 示例图片
- 返回的结果
可以看出机器检索图片上认为有237个人体头顶热力图
{
"person_num": 237,
"log_id": 916561035654628900,
"image": "/9j/4..............."
}
- 返回的图片渲染数据转换成图片后的文件 会显示数量
--------------------------------------------------分割线--------------------------------------------------
结束语:接口目前属于内测,需要单独申请哦。由上面的示例图片和渲染图片可以看到接口只是检测人头(人体头顶热力图)并不是整身哦。邀测阶段接口数据反正还不是很完善,
实际人数与接口返回还不太准确。图片本身人数越多。错误率就越大。已经反馈给百度。相信后续会慢慢优化准确率的哦。
人流量也算是一个数据。所以在特定的场景下,人流的统计真的是可以分析出很多提高利益的方案哦。
数据驱动零售¥¥¥¥¥...... 你懂得^_^
源代码GitHub地址:https://github.com/xiaoshuaishuai319/BaiTencentDuAI
精确度怎么样
识别人脸数一年前我也弄过,不过识别出来的数目和真实情况差距比较大
哈哈。站在巨人肩膀上而已
简直不要太棒~太棒啦太棒啦
简直不要太棒~