人流量统计
百度 官方文档
统计图像中的人体个数和流动趋势,以头肩为主要识别目标统计人数,无需正脸、全身照,适应人群密集、各种出入口场景
基本说明:
接口地址:https://aip.baidubce.com/rest/2.0/image-classify/v1/body_num
返回格式:json
请求方式:post
请求示例:https://aip.baidubce.com/rest/2.0/image-classify/v1/body_num?access_token=test
请求参数说明:
名称 类型 必填 说明
image string 必填 图像数据,Base64编码字符串,以图片文件形式请求时必填。图片的base64编码是不包含图片头的,(支持图片格式:jpg,bmp,png),图片Base64编码后大小不超过4M。最短边至少50px,最长边最大4096px
area string 选填 特定框选区域坐标,逗号分隔,如‘x1,y1,x2,y2,x3,y3...xn,yn',默认尾点和首点相连做闭合,此参数为空或无此参数默认识别整个图片的人数
show string 选填 是否输出渲染的图片,默认不返回,选true时返回渲染后的图片(base64),其它无效值或为空则默认false
返回参数说明:
名称 类型 说明
person_num uint64 识别出的人体数目
image string 渲染后的图片,输入参数show=true时输出该字段
JSON返回示例:
{
	"log_id": 716033439,
	"person_num": 16,
	"image": "/9j/4AAoFS2P/9k="
}
服务级错误码参照
错误码 说明
1 服务器内部错误,请再次请求, 如果持续出现此类错误,请通过QQ群(860337848)或提交工单联系技术支持团队。
2 服务暂不可用,请再次请求, 如果持续出现此类错误,请通过QQ群(860337848)或提交工单联系技术支持团队。
3 调用的API不存在,请检查请求URL后重新尝试,一般为URL中有非英文字符,如“-”,可手动输入重试
4 集群超限额,请再次请求, 如果持续出现此类错误,请通过QQ群(860337848)或提交工单联系技术支持团队。
6 无权限访问该用户数据,创建应用时未勾选相关接口
13 获取token失败
14 IAM 鉴权失败
15 应用不存在或者创建失败
17 每天请求量超限额,可通过QQ群(860337848)联系群管、提交工单提升限额
18 QPS超限额,可通过QQ群(860337848)联系群管、提交工单提升限额
19 请求总量超限额,可通过QQ群(860337848)联系群管、提交工单提升限额
100 无效的access_token参数,请检查后重新尝试
110 access_token无效
111 access token过期
282000 服务器内部错误,请再次请求, 如果持续出现此类错误,请通过QQ群(860337848)或提交工单联系技术支持团队。
216100 请求中包含非法参数,请检查后重新尝试
216101 缺少必须的参数,请检查参数是否有遗漏
216102 请求了不支持的服务,请检查调用的url
216103 请求中某些参数过长,请检查后重新尝试
216110 appid不存在,请重新核对信息是否为后台应用列表中的appid
216200 图片为空,请检查后重新尝试
216201 上传的图片格式错误,现阶段我们支持的图片格式为:PNG、JPG、BMP,请进行转码或更换图片
216202 上传的图片大小错误,现阶段我们支持的图片大小为:base64编码后小于4M,分辨率不高于4096 * 4096,请重新上传图片
216203 上传的图片base64编码有误,请校验base64编码方式,并重新上传图片
216630 识别错误,请再次请求,如果持续出现此类错误,请通过QQ群(860337848)或提交工单联系技术支持团队。
216634 检测错误,请再次请求,如果持续出现此类错误,请通过QQ群(860337848)或提交工单联系技术支持团队。
282003 请求参数缺失
282005 处理批量任务时发生部分或全部错误,请根据具体错误码排查
282006 批量任务处理数量超出限制,请将任务数量减少到10或10以下
282114 URL长度超过1024字节或为0
282808 request id xxxxx 不存在
282809 返回结果请求错误(不属于excel或json)
282810 图像识别错误
283300 入参格式有误,可检查下图片编码、代码格式是否有误
完整教学代码示例
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;
    }