数据驱动零售之【人流统计(静态人数)Java】
用户已被禁言 发布于2018-03 浏览:4919 回复:5
6
收藏
最后编辑于2020-08

前言:人数统计可带来的若干益处,包括通过做出明智的楼宇自动化决策获得成本节约、增加在场人数舒适度以及进行高效人数统计实施的多种方法。用户可以在掌握监控区域实时动态信息的同时,及时得到现场准确的人数和人群流量数据,有利于管理单位更高效的组织工作,它可与第三方软件系统进行集成,为科学决策提供数据支持。
人数统计是大型商场、购物中心、连锁店、机场、车站、博物馆、展览馆等公共场所在管理和决策方面不可缺少的数据。对于零售业而言,人流量更是非常基础的指标。因其与销售量直接的正比关系,人们对人流量计数数据的重视由来已久。

例如,在美国,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

源代码Gitee地址:https://gitee.com/xshuai/ai

收藏
点赞
6
个赞
共5条回复 最后由188******76回复于2020-08
#7188******76回复于2020-08

精确度怎么样

0
#6daipeng_hi回复于2018-08

识别人脸数一年前我也弄过,不过识别出来的数目和真实情况差距比较大

0
#4用户已被禁言回复于2018-03
#3 melissayoung回复
简直不要太棒~太棒啦太棒啦

哈哈。站在巨人肩膀上而已

1
#3melissayoung回复于2018-03

简直不要太棒~太棒啦太棒啦

1
#2melissayoung回复于2018-03

简直不要太棒~

1
TOP
切换版块