| 接口地址: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时输出该字段 | 
{
	"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;
    }