资讯 社区 文档 控制台
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术
AR与VR
数据智能
场景方案
部署方案
行业应用
智能教育
智能医疗
智能零售
智能工业
企业服务
智能政务
信息服务
智能园区

接口说明

车型识别

识别图片中车辆的具体车型,可识别常见的3000+款车型(小汽车为主),输出车辆的品牌型号、颜色、年份、位置信息;支持返回对应识别结果的百度百科词条信息,包含词条名称、百科页面链接、百科图片链接、百科内容简介。

注:当前只支持单主体识别,若图片中有多个车辆,则识别目标最大的车辆。

Json::Value result;

std::string image;
aip::get_file_content("/assets/sample.jpg", &image);

// 调用车型识别
result = client.car_detect(image, aip::null);

// 如果有可选参数
std::map<std::string, std::string> options;
options["top_num"] = "3";
options["baike_num"] = "5";

// 带参数调用车型识别
result = client.car_detect(image, options);

车型识别 请求参数详情

参数名称 是否必选 类型 默认值 说明
image std::string 图片数据的二进制字符串,可以使用aip::get_file_content函数获取
top_num std::string 返回预测得分top结果数,默认为5
baike_num std::string 0 返回百科信息的结果数,默认不返回

车型识别 返回数据参数详情

字段 是否必选 类型 说明
log_id uint64 唯一的log id,用于问题定位
color_result string 车身颜色
result car-result() 车型识别结果数组
+name string 车型名称,示例:宝马x6
+score double 置信度,取值范围0-1,示例:0.5321
+year string 年份
+baike_info object 对应识别结果的百科词条名称
++baike_url string 对应识别结果百度百科页面链接
++image_url string 对应识别结果百科图片链接
++description string 对应识别结果百科内容描述
location_result string 车辆在图片中的位置信息
+width float 车辆区域的宽度
+height float 车辆区域的高度
+left float 车辆区域离左边界的距离
+top float 车辆区域离上边界的距离

车型识别 返回示例

{
  "log_id": 4086212218842203806,
  "location_result": {
    "width": 447,
    "top": 226,
    "height": 209,
    "left": 188
  },
  "result": [{
    "baike_info": {
      "baike_url": "http://baike.baidu.com/item/%E5%B8%83%E5%8A%A0%E8%BF%AAChiron/20419512",
      "description": "布加迪Chiron是法国跑车品牌布加迪出品的豪华超跑车。配置四涡轮增压发动机,420 公里每小时,有23种颜色的选择,售价高达260万美元。"
    },
    "score": 0.98793351650238,
    "name": "布加迪Chiron",
    "year": "无年份信息"
  },
  {
    "score": 0.0021970034576952,
    "name": "奥迪RS5",
    "year": "2011-2017"
  },
  {
    "score": 0.0021096928976476,
    "name": "奥迪RS4",
    "year": "无年份信息"
  },
  {
    "score": 0.0015581247862428,
    "name": "奥迪RS7",
    "year": "2014-2016"
  },
  {
    "score": 0.00082337751518935,
    "name": "布加迪威航",
    "year": "2004-2015"
  }],
  "color_result": "颜色无法识别"
}

车辆属性识别

传入单帧图像,检测图片中所有车辆,返回每辆车的类型和坐标位置,可识别小汽车、卡车、巴士、摩托车、三轮车、自行车6大类车辆,并针对小汽车识别11种外观属性,包括:是否有车窗雨眉、是否有车顶架、副驾驶是否有人、驾驶位是否系安全带、遮阳板是否放下、车辆朝向等

当前主要适用于普通监控场景,如道路、停车场等,无人机高空拍摄的图片,因车辆目标较小,识别效果可能欠佳,后续会扩展支持超高空拍摄场景,如有该场景的需求,请通过QQ群或提交工单,详细沟通测试情况。

Json::Value result;
std::string image;
aip::get_file_content("/assets/sample.jpg", &image);
// 调用车辆属性识别
result = client.vehicleAttr(image, aip::null);
std::string url = "https//www.x.com/sample.jpg"
result = client.vehicleAttrUrl(url, aip::null);
//  如果有可选参数
std::map<std::string, std::string> options;
options["type"] = "roof_rack"
result = client.vehicleAttr(image, options);
result = client.vehicleAttrUrl(image, options);

请求参数详情

参数 是否必选 类型 取值范围 说明
image 和url二选一 string 0-255彩色图像(base64编码) 图像数据,Base64编码字符串,不超过4M。最短边至少50px,最长边最多4096px。支持图片格式:jpg/bmp/png。 注意:图片的base64编码是不包含图片头的,如(data:image/jpg;base64,)
url 和image二选一 string - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少50px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效。
type string 是否选定某些属性输出对应的信息,可从12种输出属性中任选若干,用英文逗号分隔(例如vehicle_type,roof_rack,skylight)。默认输出全部属性

附:type字段说明

ID type 说明 类别数 类别
0 vehicle_type 车辆类型 6 小汽车、卡车、公交车、摩托、三轮车、自行车
1 window_rain_eyebrow 是否有车窗雨眉 2 无车窗雨眉、有车窗雨眉
2 roof_rack 是否有车顶架 2 无车顶架、有车顶架
3 skylight 是否有天窗 2 无天窗、有天窗
4 in_car_item 是否有车内摆放物 2 无车内摆放物、有车内摆放物
5 rearview_item 是否有后视镜悬挂物 2 无后视镜悬挂物、有后视镜悬挂物
6 copilot 副驾驶是否有人 2 副驾驶无人、副驾驶有人
7 driver_belt 驾驶位是否系安全带 2 驾驶位未系安全带、驾驶位系安全带
8 copilot_belt 副驾驶位是否系安全带 2 副驾驶位未系安全带、副驾驶位系安全带
9 driver_visor 驾驶位遮阳板是否放下 2 驾驶位遮阳板未放下、驾驶位遮阳板放下
10 copilot_visor 副驾驶位遮阳板是否放下 2 副驾驶位遮阳板未放下、副驾驶位遮阳板放下
11 direction 车辆朝向 8 正前方,右前方,正右方,右后方,正后方,左后方,正左方,左前方

返回参数详情

字段 是否必选 类型 说明
vehicle_num int 检测到的车辆框数目
vehicle_info object数组 每个车辆检测框的具体信息
+location object 检测到的车辆框位置
++left int 检测框左坐标
++top int 检测框顶坐标
++width int 检测框宽度
++height int 检测框高度
+attributes object数组 包含所有车辆属性内容
++vehicle_type object 车辆类型
+++name string 如"小汽车"
+++score float 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值
++window_rain_eyebrow object 是否有车窗雨眉
+++score float 对应概率分数,分数越大代表属性的正向取值可能性越大(即有车窗雨眉),实际应用中可根据测试情况选取合适的score阈值,推荐阈值0.02
++roof_rack object 是否有车顶架
+++score float 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值,推荐阈值0.01
++skylight object 是否有天窗
+++score float 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值,推荐阈值0.5
++in_car_item object 是否有车内摆放物
+++score float 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值,推荐阈值0.35
++rearview_item object 是否有后视镜悬挂物
+++score float 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值,推荐阈值0.4
++copilot object 副驾驶是否有人
+++score float 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值,推荐阈值0.55
++driver_belt object 驾驶位是否系安全带
+++score float 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值,推荐阈值0.75
++copilot_belt object 副驾驶位是否系安全带
+++score float 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值,推荐阈值0.85
++driver_visor object 驾驶位遮阳板是否放下
+++score float 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值,推荐阈值0.2
++copilot_visor object 副驾驶位遮阳板是否放下
+++score float 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值,推荐阈值0.1
++direction object 车辆朝向
+++name string 如"正前方"
+++score float 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值

返回示例

未检测到任何车辆:

    {
        "vehicle_num": 0,
        "vehicle_info":
        [
            {
                "location":
                {
                    "left": 0,
                    "top": 0,
                    "width": 0,
                    "height": 0
                    "score": 0
                 }
                "attributes":
                {
                }
            }
        ]
    }

检测到2辆小汽车:

    {
         "vehicle_num": 2,
         "vehicle_info":
         [
            {
                "location":
                {
                    "left": 100,
                    "top": 200,
                    "width": 200,
                    "height": 400
                }
                "attributes":
                {
                    "vehicle_type":
                    {
                        "name": "小汽车",
                        "score": 0.852
                    }
                     "window_rain_eyebrow":
                    {
                        "score": 0.937
                    }
                    "roof_rack":
                    {
                        "score": 0.889
                    }
                    "skylight":
                    {
                        "score": 0.925
                    }
                    "in_car_item":
                    {
                        "score": 0.774
                    }
                    "rearview_item":
                    {
                        "score": 0.774
                    }
                    "copilot":
                    {
                        "score": 0.711
                    }
                    "driver_belt":
                    {
                        "score": 0.633
                    }
                    "copilot_belt":
                    {
                        "score": 0.721
                    }
                    "driver_visor":
                    {
                        "score": 0.455
                    }
                    "copilot_visor":
                    {
                        "score": 0.455
                    }
                    "direction":
                    {
                        "name": "正前方",
                        "score": 0.455
                    }
                }
            }
            {
                "location":
                {
                    "left": 400,
                    "top": 200,
                    "width": 200,
                    "height": 400
                }
                "attributes":
                {
                    "vehicle_type":
                    {
                        "name": "小汽车",
                        "score": 0.921
                    }
                    "window_rain_eyebrow":
                    {
                        "score": 0.918
                    }
                    "roof_rack":
                    {
                        "score": 0.850
                    }
                    "skylight":
                    {
                        "score": 0.714
                    }
                    "in_car_item":
                    {
                        "score": 0.787
                    }
                    "rearview_item":
                    {
                        "score": 0.787
                    }
                    "copilot":
                    {
                        "score": 0.711
                    }
                    "driver_belt":
                    {
                        "score": 0.633
                    }
                    "copilot_belt":
                    {
                        "score": 0.721
                    }
                    "driver_visor":
                    {
                        "score": 0.455
                    }
                    "copilot_visor":
                    {
                        "score": 0.455
                    }
                    "direction":
                    {
                        "name": "右前方",
                        "score": 0.455
                    }
                }
             }
         ]
    }

车辆检测-高空版

面向高空拍摄视角(30米以上),传入单帧图像,检测图片中所有车辆,返回每辆车的坐标位置(不区分车辆类型),并进行车辆计数,支持指定矩形区域的车辆检测与数量统计。

Json::Value result;
std::string image;
aip::get_file_content("/assets/sample.jpg", &image);
// 调用车辆检测-高空版
result = client.vehicleDetectHigh(image, aip::null);
std::string url = "https//www.x.com/sample.jpg"
result = client.vehicleDetectHighUrl(url, aip::null);
//  如果有可选参数
std::map<std::string, std::string> options;
options["area"] = ""
result = client.vehicleDetectHigh(image, options);
result = client.vehicleDetectHighUrl(image, options);

请求参数详情

参数 是否必选 类型 可选值范围 说明
image 和url二选一 string 0-255彩色图像(base64编码) 图像数据,Base64编码字符串,不超过4M。最短边至少50px,最长边最多4096px。支持图片格式:jpg,bmp,png。 注意:图片的base64编码是不包含图片头的,如(data:image/jpg;base64,)
url 和image二选一 string 0-255彩色图像(base64编码) 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少50px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效。
area string 小于原图像素范围 只统计该矩形区域内的车辆数,缺省时为全图统计。
逗号分隔,如‘x1,y1,x2,y2,x3,y3...xn,yn',按顺序依次给出每个顶点的x、y坐标(默认尾点和首点相连),形成闭合矩形区域。
服务会做范围(顶点左边需在图像范围内)及个数校验(数组长度必须为偶数,且为4个顶点);目前只支持单个矩形区域。坐标取值不能超过图像宽度和高度,比如1280的宽度,坐标值最大到1279

返回参数详情

字段 是否必选 类型 说明
vehicle_num object 检测到的车辆数目
vehicle_info object[] 每个车辆检测框的具体信息
+location object 检测到的目标坐标位置
++left int32 目标检测框左坐标
++top int32 目标检测框顶坐标
++width int32 目标检测框宽度
++height int32 目标检测框高度
+type int32 目标物体类型,固定为:car
+probability float 置信度分数,取值0-1之间,越接近1说明识别准确的概率越大

返回示例

未检测到任何车辆:

{
    "vehicle_num":0,
    "vehicle_info":[]
}

检测到3辆车:

{
	"vehicle_num": 3,
	"vehicle_info": [
		{
			"type": "car",
			"location": {
				"width": 73,
				"top": 655,
				"left": 1193,
				"height": 49
			},
			"probability": 0.89164280891418
		},
		{
			"type": "car",
			"location": {
				"width": 40,
				"top": 582,
				"left": 1026,
				"height": 37
			},
			"probability": 0.75931918621063
		},
		{
			"type": "car",
			"location": {
				"width": 131,
				"top": 712,
				"left": 1366,
				"height": 68
			},
			"probability": 0.74551039934158
		}
	]
}

车辆检测

传入单帧图像,检测图片中所有机动车辆,返回每辆车的类型和坐标位置,可识别小汽车、卡车、巴士、摩托车、三轮车5类车辆,并对每类车辆分别计数,同时可定位小汽车、卡车、巴士的车牌位置,支持指定矩形区域的车辆检测与数量统计。

当前主要适用于普通监控场景,如道路、停车场等,无人机高空拍摄的图片,因车辆目标较小,识别效果可能欠佳,后续会扩展支持超高空拍摄场景,如有该场景的需求,请通过QQ群或提交工单,详细沟通测试情况。

Json::Value result;
std::string image;
aip::get_file_content("/assets/sample.jpg", &image);
// 调用车辆检测
result = client.vehicleDetect(image, aip::null);
std::string url = "https//www.x.com/sample.jpg"
result = client.vehicleDetectUrl(url, aip::null);
//  如果有可选参数
std::map<std::string, std::string> options;
options["area"] = ""
result = client.vehicleDetect(image, options);
result = client.vehicleDetectUrl(image, options);

请求参数详情

参数 是否必选 类型 可选值范围 说明
image 和url二选一 string 0-255彩色图像(base64编码) 图像数据,Base64编码字符串,不超过4M。最短边至少50px,最长边最多4096px。支持图片格式:jpg,bmp,png。 注意:图片的base64编码是不包含图片头的,如(data:image/jpg;base64,)
url 和image二选一 string 0-255彩色图像(base64编码) 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少50px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效。
area string 小于原图像素范围 只统计该矩形区域内的车辆数,缺省时为全图统计。
逗号分隔,如‘x1,y1,x2,y2,x3,y3...xn,yn',按顺序依次给出每个顶点的x、y坐标(默认尾点和首点相连),形成闭合矩形区域。
服务会做范围(顶点左边需在图像范围内)及个数校验(数组长度必须为偶数,且为4个顶点);目前只支持单个矩形区域。坐标取值不能超过图像宽度和高度,比如1280的宽度,坐标值最大到1279

返回参数详情

字段 是否必选 类型 说明
vehicle_num object 检测到的车辆数目
+car int 小汽车数量
+truck int 卡车数量
+bus int 巴士数量
+motorbike int 摩托车数量
+tricycle int 三轮车数量
+carplate int 车牌的数量,小汽车、卡车、巴士才能检测到车牌
vehicle_info object[] 每个框的具体信息
+location object 检测到的目标坐标位置
++left int32 目标检测框左坐标
++top int32 目标检测框顶坐标
++width int32 目标检测框宽度
++height int32 目标检测框高度
+type int32 目标物体类型,car、truck、bus、motorbike、tricycle、carplate
+probability float 置信度分数,取值0-1之间,越接近1说明识别准确的概率越大

返回示例

未检测到任何车辆:

{
    "vehicle_num":
    {
        "car":0,
        "truck":0,
        ...
        "tricycle":0
    },
    "vehicle_info":[]
}

检测到3辆小汽车、1辆卡车:

{
	"vehicle_num": {
		"motorbike": 0,
		"tricycle": 0,
		"car": 3,
		"carplate": 0,
		"truck": 1,
		"bus": 0
	},
	"vehicle_info": [
		{
			"type": "car",
			"location": {
				"width": 73,
				"top": 655,
				"left": 1193,
				"height": 49
			},
			"probability": 0.89164280891418
		},
		{
			"type": "car",
			"location": {
				"width": 40,
				"top": 582,
				"left": 1026,
				"height": 37
			},
			"probability": 0.75931918621063
		},
		{
			"type": "car",
			"location": {
				"width": 131,
				"top": 712,
				"left": 1366,
				"height": 68
			},
			"probability": 0.74551039934158
		},
		{
			"type": "truck",
			"location": {
				"width": 348,
				"top": 604,
				"left": 229,
				"height": 311
			},
			"probability": 0.80106335878372
		}
	]
}

车辆分割

传入单帧图像,检测图像中的车辆,以小汽车为主,识别车辆的轮廓范围,与背景进行分离,返回分割后的二值图、灰度图,支持多个车辆、车门打开、后备箱打开、机盖打开、正面、侧面、背面等各种拍摄场景。

Json::Value result;
std::string image;
aip::get_file_content("/assets/sample.jpg", &image);
// 调用车辆分割
result = client.vehicleSeg(image, aip::null);
//  如果有可选参数
std::map<std::string, std::string> options;
options["type"] = ""
result = client.vehicleSeg(image, options);

请求参数详情

参数 是否必选 类型 可选值范围 说明
image string 0-255彩色图像(base64编码) 图像数据,Base64编码字符串,不超过4M。最短边至少50px,最长边最多4096px。支持图片格式:jpg/bmp/png。 注意:图片的base64编码是不包含图片头的,如(data:image/jpg;base64,)
type string labelmap,scoremap 可以通过设置type参数,自主设置返回哪些结果图,避免造成带宽的浪费。
1)可选值说明:
labelmap - 二值图像,需二次处理方能查看分割效果
scoremap - 车辆前景灰度图
2)type 参数值可以是可选值的组合,用逗号分隔;如果无此参数默认输出全部3类结果图

注:返回的二值图像需要进行二次处理才可查看分割效果,示例代码如下;灰度图不用处理,直接解码保存图片即可

Python:

{
    import cv2
    import numpy as np
    import base64
    labelmap = base64.b64decode(res['labelmap'])    # res为通过接口获取的返回json
    nparr = np.fromstring(labelmap, np.uint8)
    labelimg = cv2.imdecode(nparr, 1)
    # width, height为图片原始宽、高
    labelimg = cv2.resize(labelimg, (width, height), interpolation=cv2.INTER_NEAREST)
    im_new = np.where(labelimg==1, 255, labelimg)
    cv2.imwrite('path/to/your/outputfile', im_new)
}

Java:

public static BufferedImage resize(BufferedImage img, int newW, int newH) {
    Image tmp = img.getScaledInstance(newW, newH, Image.SCALE_SMOOTH);
    BufferedImage dimg = new BufferedImage(newW, newH, BufferedImage.TYPE_INT_ARGB);

    Graphics2D g2d = dimg.createGraphics();
    g2d.drawImage(tmp, 0, 0, null);
    g2d.dispose();

    return dimg;
}

public static void convert(String labelmapBase64, int realWidth, int realHeight) {
    try {
	
        byte[] bytes = Base64.getDecoder().decode(labelmapBase64);
        InputStream is = new ByteArrayInputStream(bytes);
        BufferedImage image = ImageIO.read(is);
        BufferedImage newImage = resize(image, realWidth, realHeight);
        BufferedImage grayImage = new BufferedImage(realWidth, realHeight, BufferedImage.TYPE_BYTE_GRAY);
        for(int i= 0 ; i < realWidth ; i++){
            for(int j = 0 ; j < realHeight; j++){
                int rgb = newImage.getRGB(i, j);
                grayImage.setRGB(i, j, rgb * 255);  //将像素存入缓冲区
            }
        }
        File newFile = new File("gray.jpg");
        ImageIO.write(grayImage, "jpg", newFile);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

返回参数详情

字段 是否必选 类型 说明
labelmap string 分割结果图片,base64编码之后的二值图像,单通道图片,需二次处理方能查看分割效果
scoremap string 分割后车辆前景的scoremap,归一到0-255,不用进行二次处理,直接解码保存图片即可,单通道图片。Base64编码后的灰度图文件,图片中每个像素点的灰度值 = 置信度 * 255,置信度为原图对应像素点位于车辆轮廓内的置信度,取值范围[0, 1]

返回示例

{
	"log_id": 716033439,
	"labelmap": "xxxx",
	"scoremap": "xxxx",
	"foreground": "xxxx"
}

车辆外观损伤识别

针对常见的小汽车车型,识别车辆外观受损部件及损伤类型,支持32种车辆部件、5大类外观损伤。同时可输出损伤的数值化结果(长宽、面积、部件占比),支持单图多种损伤的识别。

  • 可识别的32种汽车外观零部件:前保险杠、机盖、左前叶子板、左A柱、左前门、左后叶子板、左底大边、后保险杠、行李箱盖、右后叶子板、右底大边、右后门、右前门、右前叶子板、右A柱、车顶、钢圈、中网、左前大灯、左前雾灯、左前雾灯框、右前大灯、右前雾灯、右前雾灯框、前保下隔栅、左后视镜、右后视镜、左后外尾灯、左后内尾灯、右后外尾灯、右后内尾灯、左后门
  • 可识别的5类外观损伤:刮擦、凹陷、开裂、褶皱、穿孔(一般指有破洞的情况)
Json::Value result;
std::string image;
aip::get_file_content("/assets/sample.jpg", &image);
// 调用车辆外观损伤识别
result = client.vehicleDamage(image, aip::null);

请求参数详情

参数 是否必选 类型 取值范围 说明
image string 0-255彩色图像(base64编码) 图像数据,Base64编码字符串,不超过4M。最短边至少50px,最长边最多4096px。支持图片格式:jpg,bmp,png。 注意:图片的base64编码是不包含图片头的,如(data:image/jpg;base64,)

图片拍摄方式建议与要求

  1. 水平方向放置手机或其他拍照设备;
  2. 正对受损部位,使得受损部位位于图像中心2/3区域内;
  3. 调节手机与受损部位之间的距离,使得整张图能看出受损车辆部件,同时能看清受损区域,尽量减少车身反光、污渍干扰;
  4. 拍摄图片分辨率要求1280 * 720以上,拍摄清晰无模糊、遮挡。

返回参数详情

字段 是否必选 类型 说明
log_id uint32 请求标识码,随机数,唯一;用于排查问题
result object 识别结果
+description string 检验图片效果是否满足识别要求,包含车辆检测、图片内容过滤两部分
1、图片符合要求时,返回very good,返回示例:"Very good【车辆局部特写图】【1.000000】"
2、图片不符合要求时,显示检验不通过的描述信息:
1)没检测到车辆,返回示例:"No car detected !"
2)检测到了车辆,但图片内容未通过校验,返回描述信息【前端过滤类别】【概率值】,返回示例:"Failed【散落部件】【0.303969】"
+damage_info object[] 部件损伤信息
++parts string 汽车零部件名称,共计支持32种零部件
++type unit32 损伤类别,共计支持5类外观损伤;无损伤则返回“正常” 。注:如果全图无损伤,则整个返回结果为空;某个部件的type为“正常”仅表示该部件无损伤
++probability float 概率打分
++numeric_info object[] 损伤的数值化输出结果,如果有多处损伤,则有多个object;损伤的部件需拍摄完整,才能输出数值化结果,否则只返回部件名称和损伤类别,不输出数值化信息
+++length float 损伤区域的长,单位厘米
+++width float 损伤区域的宽,单位厘米
+++area float 损伤区域的面积,为实际面积,不是单纯的长*宽
+++ratio float 损伤区域面积相对于部件面积的占比,= 损伤区域面积 / 部件区域面积,均为实际面积,不是单纯的长*宽

返回示例

图片不满足识别需求,未检测到汽车:

    {
    	"description":"No car detected !",
    	"damage_info":[]
    }

图片不满足识别需求,检测到汽车,但未通过图片内容校验:

    {
    	"description":"Failed[散落部件][0.303969]",
    	"damage_info":[]
    }

图片满足识别需求,正常返回,不包含数值化输出结果,有两处损伤:

    {
    	"description":"Very good[车辆局部特写图][1.000000]",
    	"damage_info":[
    	{
    		"parts":前保险杠,
    		"probability":89,
    		"type":刮擦
    	},
    	{
    		"parts":左前叶子板,
    		"probability":74,
    		"type":凹陷
    	}
    	]
    }

图片满足识别需求,正常返回,包含数值化输出结果,有两处损伤:

    {
    	"description":"Very good[车辆局部特写图][1.000000]",
    	"damage_info":[
    	{
    		"numeric_info":[
    		{
    			"area":3.540100097656250,
    			"height":5.260000228881836,
    			"ratio":0.04069080576300621,
    			"width":1.139999985694885
    		}
    		],
    		"parts":前保险杠,
    		"probability":95,
    		"type":刮擦,
    		"numeric_info":[
    		{
    			"area":2.418999910354614,
    			"height":2.750,
    			"ratio":0.08458041399717331,
    			"width":1.460000038146973
    		}
    		],
    		"parts":左前叶子板,
    		"probability":84,
    		"type":刮擦
    	}
    	]
    }

车流统计

根据传入的连续视频图片序列,进行车辆检测和追踪,返回每个车辆的坐标位置、车辆类型(包括小汽车、卡车、巴士、摩托车、三轮车5类)。在原图中指定区域,根据车辆轨迹判断驶入/驶出区域的行为,统计各类车辆的区域进出车流量,可返回含统计值和跟踪框的渲染图

(注:抽祯频率需>2fps,否则无法有效跟踪,建议5fps。)

当前主要适用于普通监控场景,如道路、停车场等,无人机高空拍摄的图片,因车辆目标较小,识别效果可能欠佳,后续会扩展支持超高空拍摄场景,如有该场景的需求,请通过QQ群或提交工单,详细沟通测试情况。

Json::Value result;
std::string image;
aip::get_file_content("/assets/sample.jpg", &image);
int case_id = 
std::string case_init = 
std::string area = 
// 调用车流统计
result = client.trafficFlow(image, case_id, case_init, area, aip::null);
std::string url = 
result = client.trafficFlowUrl(url, case_id, case_init, area, aip::null);
//  如果有可选参数
std::map<std::string, std::string> options;
options["show"] = "true"
result = client.trafficFlow(image, case_id, case_init, area, options);
result = client.trafficFlowUrl(image, case_id, case_init, area, options);

请求参数详情

参数 是否必选 类型 取值范围 说明
image 和url二选一 string 0-255彩色图像(base64编码) 图像数据,Base64编码字符串,不超过4M。最短边至少50px,最长边最多4096px。支持图片格式:jpg,bmp,png。 注意:图片的base64编码是不包含图片头的,如(data:image/jpg;base64,)
url 和image二选一 string 0-255彩色图像(base64编码) 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少50px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效。
case_id int32 - 任务ID(通过case_id区分不同视频流,自拟,不同序列间不可重复)
case_init string true/false 每个case的初始化信号,为true时对该case下的跟踪算法进行初始化,为false时重载该case的跟踪状态。当为false且读取不到相应case的信息时,直接重新初始化
show string true/false 是否返回结果图(含统计值和跟踪框)。选true时返回渲染后的图片(base64),其它无效值或为空则默认false。
area string 小于原图像素范围 只统计进出该区域的车辆。
逗号分隔,如‘x1,y1,x2,y2,x3,y3...xn,yn',按顺序依次给出每个顶点的x、y坐标(默认尾点和首点相连),形成闭合多边形区域。
服务会做范围(顶点左边需在图像范围内)及个数校验(数组长度必须为偶数,且大于3个顶点)。只支持单个多边形区域,建议设置矩形框,即4个顶点。坐标取值不能超过图像宽度和高度,比如1280的宽度,坐标值最大到1279

area参数设置说明

进出区域方向:从区域外走到区域内就是in,相反就是out。

如下图:绿色框为区域框,左边红色箭头的方向为in,右边蓝色箭头的方向为out。

返回参数详情

字段 是否必选 类型 说明
vehicle_num object 检测到的车辆数目
+car int 小汽车数量
+truck int 卡车数量
+bus int 巴士数量
+motorbike int 摩托车数量
+tricycle int 三轮车数量
vehicle_info object[] 每个框的具体信息
+location object 跟踪到的车辆检测框位置
++left int 车辆检测框左坐标
++top int 车辆检测框顶坐标
++width int 车辆检测框宽度
++height int 车辆检测框高度
+ID int 车辆的ID编号
+type string 车辆类型
vehicle_count object[] 进出区域的车流统计
+car object 小汽车
++in int 当前帧相应车辆驶入区域的瞬时数量,如要计算某一段时间内进入区域的累计车辆数,可基于连续帧图片的返回结果计算得到
++out int 当前帧相应车辆驶出区域的瞬时数量,如要计算某一段时间内离开区域的累计车辆数,可基于连续帧图片的返回结果计算得到
+truck object 卡车
++in int
++out int
+bus object 巴士
++in int
++out int
+motorbike object 摩托车
++in int
++out int
+tricycle object 三轮车
++in int
++out int
image string 结果图,含跟踪框和统计值(渲染jpg图片byte内容的base64编码,得到后先做base64解码再以字节流形式imdecode)

渲染结果图说明

画面里刚出现的车辆检测框都是红色,被跟踪锁定之后会变成其他颜色(颜色随机,不同颜色没有特定规律),模型根据同颜色框的运动轨迹来判断进出移动方向;车辆被跟踪锁定后,检测框上方会出现车辆的ID编号,ID的取值逻辑为:每个case从1开始,不同车辆向上递增但不一定连续。

返回示例

未检测到任何车:

{
    "vehicle_num":
    {
        "car":0,
        "truck":0,
        ...
        "tricycle":0
    },
    "vehicle_info":[],
    “vehicle_count”:
    {
        "car":
        {
            "in":0,
            "out":0
        },
        "truck":
        {
            "in":0
            "out":0
        },
        ...
    }
}

检测到1辆小汽车、1辆卡车,无轨迹,无车进出区域:

{
    "vehicle_num":
    {
        "car":1,
        "truck":1,
 
        ...
 
        "tricycle":0
 
    },
 
    "vehicle_info":[],
    “vehicle_count”:
    {
        "car":
        {
            "in":0,
            "out":0
        },
        "truck":
        {
            "in":0
            "out":0
        },
 
        ...
 
    }
}

检测到2辆小汽车、1辆卡车,3条轨迹,1辆卡车离开区域:

{
    "vehicle_num":
    {
        "car":2,
        "truck":1,
 
        ...
 
        "tricycle":0
 
    },
 
    "vehicle_info":
    [
        {
            "ID":3
            "location":
            {
                "left": 100,
                "top": 200,
                "width": 200,
                "height": 400,
             }
            "type": "car"
        },
        {
            "ID": 5
            "location":
            {
                "left": 400,
                "top": 200,
                "width": 200,
                "height": 400,
             }
            "type": "car"
         },
         {
            "ID": 6
            "location":
            {
                "left": 600,
                "top": 200,
                "width": 300,
                "height": 400,
             }
            "type": "truck"
         }
    ],
    “vehicle_count”:
    {
        "car":
        {
            "in":0,
            "out":0
        },
        "truck":
        {
            "in":0
            "out":1
        },
 
        ...
 
    }
}
上一篇
快速入门
下一篇
错误信息