API Path
/aipaas/cv/v2/image/2101008
请求协议
HTTPS
请求方法
POST
请求头部 :
| 头部标签 | 必填 | 说明 | 类型 | 数据字典 | 限制 | 头部内容 | 示例 |
|---|---|---|---|---|---|---|---|
| Content-Type | 是 | application/json | [string] | application/json | application/json | ||
| X-APP-ID | 是 | 控制台--应用管理--创建应用--AppID | [string] | ||||
| Device-Uuid | 是 | 设备管理-设备uuid | [string] | ||||
| Authorization | 是 | 新鉴权调用时必传 | [string] |
请求参数 Json
Object
| 参数名 | 说明 | 必填 | 类型 | 数据字典 | 限制 | 示例 |
|---|---|---|---|---|---|---|
| code | 请求状态码,固定1019 | 是 | [int] | 1019 | ||
| data | 算法参数 | 是 | [object] | |||
| data>>task_id | 算法任务id | 是 | [string] | 0d04322bee08401a9c15a5ef8643e64f | ||
| data>>camera_id | 设备编码 | 是 | [string] | A15414521025 | ||
| data>>algo_tasks | 算法参数数组 | 是 | [array] | |||
| data>>algo_tasks>>algo_config | 单个参数信息 | 是 | [object] | |||
| data>>algo_tasks>>algo_config>>version | 参数版本号 | 否 | [string] | 1.0.0 | ||
| data>>algo_tasks>>algo_config>>algo_roi | roi区域配置【如果算法不支持roi,忽略此参数解析】,本算法不支持画区域 | 是 | [object] | |||
| data>>algo_tasks>>algo_config>>algo_roi>>roi_type | roi坐标类型,1-绝对坐标,2-相对坐标【is_full_region为true时为非必填】 | 是 | [int] | 1:绝对坐标,2:相对坐标 | 1 | |
| data>>algo_tasks>>algo_config>>algo_roi>>roi_list | 设定区域列表【is_full_region为false时为非必填】 | 否 | [array] | |||
| data>>algo_tasks>>algo_config>>algo_roi>>roi_list>>name | 区域id,需全局唯一 | 是 | [string] | 61b3a095eb0bc49 | ||
| data>>algo_tasks>>algo_config>>algo_roi>>roi_list>>point_list | 区域坐标点集【由算法内部判断,画线至少需要2个点,画多边形区域至少需要3个点】 | 是 | [array] | |||
| data>>algo_tasks>>algo_config>>algo_roi>>roi_list>>point_list>>x | X轴坐标 | 是 | [float] | 0.0 | ||
| data>>algo_tasks>>algo_config>>algo_roi>>roi_list>>point_list>>y | Y轴坐标 | 是 | [float] | 1.0 | ||
| data>>algo_tasks>>algo_config>>algo_roi>>roi_list>>extra_params | 区域扩展参数 | 否 | [array] | |||
| data>>algo_tasks>>algo_config>>algo_roi>>roi_list>>extra_params>>key | 参数名 | 是 | [string] | type | ||
| data>>algo_tasks>>algo_config>>algo_roi>>roi_list>>extra_params>>value | 参数值 | 是 | [string] | 1 | ||
| data>>algo_tasks>>algo_config>>algo_roi>>is_full_region | 是否全景图,true-是,false-否,本算法只支持全图 | 是 | [boolean] | true:是,false:否 | true | |
| data>>algo_tasks>>algo_config>>algo_roi>>region_mode | 区域模式 | 是 | [int] | 1:检测框中心点在区域内即代表检测目标在区域内,2:检测框脚点在区域内即代表检测目标在区域内,3:检测框中心点与脚点同时在区域内即代表检测目标在区域内,4:检测框中心点或脚点在区域内即代表检测目标在区域内 | 1 | |
| data>>algo_tasks>>algo_config>>extra_params | 算法定制化参数 | 否 | [array] | [{"key":"algo_type","value":"7009"},{"key":"threshold","value":"0.65"},{"key":"warningCount","value":"2"}] | ||
| data>>algo_tasks>>algo_config>>extra_params>>key | 参数名【多算法算法标识key必须为algo_type,阈值为threshold,连续超过几次告警为warningCount】 | 是 | [string] | algo_type:多算法包算法标识,threshold:阈值,warningCount:连续超过几次告警 | ||
| data>>algo_tasks>>algo_config>>extra_params>>value | 参数值【key=algo_type时为具体算法标识,key=threshold时为0~1之间的小数,key=warningCount时为整数】 | 是 | [string] | |||
| data>>image | 图片Base64(jpeg格式base64编码)【和image二选一,优先使用image字段】 | 否 | [string] | iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAFVBMVEX////7ODj+z8/9eHj9m5v9s7P7TEwZgBMVAAAACXBIWXMAAAsTAAALEwEAmpwYAAAATklEQVQokd2NQQqAQAzEMjNd//9kUXEXFw8eBMEcCiUlha9p8lspC6ukwDZHeBcBNcvUJICkAjwVheV2k4pUkMvzWo5U307kLiSNkz+wAvF5AMTthEMUAAAAAElFTkSuQmCC | ||
| data>>image_url | 图片地址【和image二选一,优先使用image字段】 | 否 | [string] | http://10.127.156.152:8081/bucket/f7884c2f-0efc-42ae-0372-e30eddddc53b.jpg |
响应内容 :
返回结果
> 成功 (200)
> Json
> Object
| 参数名 | 说明 | 必填 | 类型 | 数据字典 | 限制 | 示例 |
|---|---|---|---|---|---|---|
| code | 算法类型,固定1020 | 是 | [int] | 1020 | ||
| data | 算法调用结果 | 是 | [object] | |||
| data>>error_code | 错误码,值为APP_ERR_OK则为成功 | 是 | [string] | APP_ERR_OK | ||
| data>>display_image | 图片jpeg编码,图片流为空 | 是 | [string] | |||
| data>>error_message | 错误描述 | 是 | [string] | 正常状态 | ||
| data>>camera_id | 创建任务时传入的设备编码 | 是 | [string] | A15414521025 | ||
| data>>task_id | 创建任务时传入的算法任务id | 是 | [string] | 0d04322bee08401a9c15a5ef8643e64f | ||
| data>>frame_id | 视频帧id | 是 | [string] | 0d04322bee08401a9c15a5ef8sldufj8 | ||
| data>>frame_width | 图片宽度 | 是 | [string] | 1920 | ||
| data>>frame_height | 图片高度 | 是 | [string] | 1080 | ||
| data>>pull_pts_ms | 拉流的时间戳;图片流为无效值,不用取值 | 是 | [string] | |||
| data>>send_pts_ms | 告警推送时的时间戳;图片流为无效值,不用取值 | 是 | [string] | |||
| data>>algo_outputs | 算法处理结果数组 | 是 | [array] | |||
| data>>algo_outputs>>roi_message | 设定区域信息 | 否 | [object] | |||
| data>>algo_outputs>>roi_message>>name | 创建任务时传入的区域id | 是 | [string] | 61b3a095eb0bc49 | ||
| data>>algo_outputs>>roi_message>>point_list | 创建任务时传入的区域坐标点集 | 是 | [array] | |||
| data>>algo_outputs>>roi_message>>point_list>>x | 创建任务时传入的X轴坐标 | 是 | [float] | 0.0 | ||
| data>>algo_outputs>>roi_message>>point_list>>y | 创建任务时传入的Y轴坐标 | 是 | [float] | 1.0 | ||
| data>>algo_outputs>>roi_message>>extra_params | 创建任务时传入的区域其他参数 | 否 | [array] | |||
| data>>algo_outputs>>roi_message>>extra_params>>key | 创建任务时传入的参数名【是否告警参数名固定为alarm】 | 是 | [string] | alarm | ||
| data>>algo_outputs>>roi_message>>extra_params>>value | 创建任务时传入的参数值【是否告警固定为1或者0】 | 是 | [string] | 1 | ||
| data>>algo_outputs>>objectinfo | 检测到的目标对象数组 | 是 | [array] | |||
| data>>algo_outputs>>objectinfo>>class_name | 目标类别名称 | 是 | [string] | 目标类别名称 | ||
| data>>algo_outputs>>objectinfo>>class_id | 目标类别id | 是 | [int] | 1 | ||
| data>>algo_outputs>>objectinfo>>rect | 对象位置坐标 | 是 | [object] | |||
| data>>algo_outputs>>objectinfo>>rect>>x0 | 左上X轴坐标 | 是 | [float] | 0.0 | ||
| data>>algo_outputs>>objectinfo>>rect>>y0 | 左上Y轴坐标 | 是 | [float] | 0.0 | ||
| data>>algo_outputs>>objectinfo>>rect>>x1 | 右下X轴坐标 | 是 | [float] | 100.0 | ||
| data>>algo_outputs>>objectinfo>>rect>>y1 | 右下Y轴坐标 | 是 | [float] | 100.0 | ||
| data>>algo_outputs>>objectinfo>>confidence | 目标置信度(0~1) | 是 | [float] | 0.99 | ||
| data>>algo_outputs>>objectinfo>>track_id | 目标追踪ID | 是 | [string] | 0d04322bee0 | ||
| data>>algo_outputs>>objectinfo>>score | 目标得分(0~1) | 是 | [float] | 0.99 | ||
| data>>algo_outputs>>objectinfo>>feature | 特征值,float数组【特征提取算法必返回】 | 否 | [array] | [0.0620517209172249, 0.0471773408353329] | ||
| data>>algo_outputs>>objectinfo>>attribute | 属性值数组【解析类算法返回的属性列表】 | 否 | [array] | |||
| data>>algo_outputs>>objectinfo>>attribute>>key | 属性名称 | 是 | [string] | sex | ||
| data>>algo_outputs>>objectinfo>>attribute>>value | 属性值 | 是 | [string] | 1 | ||
| data>>algo_outputs>>objectinfo>>attribute>>score | 属性置信度(0~1) | 是 | [float] | 0.99 | ||
| data>>algo_outputs>>objectinfo>>extra_message | 目标额外信息,具体信息参考详细说明 | 否 | [array] | |||
| data>>algo_outputs>>objectinfo>>extra_message>>key | 参数名 | 是 | [string] | type | ||
| data>>algo_outputs>>objectinfo>>extra_message>>value | 参数值 | 是 | [string] | 1 | ||
| data>>algo_outputs>>objectinfo>>image_message | 目标图片信息,图片流为空 | 否 | [array] | |||
| data>>algo_outputs>>objectinfo>>image_message>>key | 图片名称 | 是 | [string] | xxx.jpg | ||
| data>>algo_outputs>>objectinfo>>image_message>>value | 图片Base64【jpeg格式base64编码】 | 是 | [string] | iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAFVBMVEX////7ODj+z8/9eHj9m5v9s7P7TEwZgBMVAAAACXBIWXMAAAsTAAALEwEAmpwYAAAATklEQVQokd2NQQqAQAzEMjNd//9kUXEXFw8eBMEcCiUlha9p8lspC6ukwDZHeBcBNcvUJICkAjwVheV2k4pUkMvzWo5U307kLiSNkz+wAvF5AMTthEMUAAAAAElFTkSuQmCC | ||
| data>>extra_message | 算法处理结果额外信息,透传给上层应用 | 否 | [array] | |||
| data>>extra_message>>key | 参数名【如果为多算法镜像,固定返回算法标识的key必须为algo_type】 | 是 | [string] | algo_type | ||
| data>>extra_message>>value | 参数值【如果为多算法镜像,值为具体算法标识】 | 是 | [string] | 7009 |
成功示例[Mock API] :
{
"code": 1007,
"data": {
"error_code": "APP_ERR_OK",
"error_message": "",
"camera_id": "facepvn12",
"task_id": "facepvn12",
"frame_id": "1132",
"frame_width": "1920",
"frame_height": "1080",
"display_image": "",
"algo_outputs": [{
"roi_message": {
"name": "position_0",
"point_list": [{
"x": 0,
"y": 0
},
{
"x": 1920,
"y": 0
},
{
"x": 1920,
"y": 1080
},
{
"x": 0,
"y": 1080
}
],
"extra_params": [
]
},
"objectinfo": [{
"class_name": "person", //目标检测类别;person:人;face:脸;nonvehicle:非机动车;vehicle:车辆
"class_id": 1,
"rect": { //目标检测坐标,输出是float值?
"x0": 1291,
"y0": 274,
"x1": 1528,
"y1": 876
},
"confidence": 0.85546875, //目标检测置信度,无效值-1
"track_id": "144", //跟踪id,无效值""
"score": 0, //无效值-1
"extra_message": [{
"key": "quality", //质量得分
"value": "0.729895" //无效""
},
{
"key": "children_list", //绑定上的人脸trackid
"value": "[1231]" //无效值空""
},
{
"key": "image_key_frameid", //推图的帧号
"value": "1550" //无效值""
},
{
"key": "is_movement", //目标是否运动
"value": "1" //无效值""
},
{
"key": "track_location", //命名跟人脸保持一致0 1/2 3
"value": "0" //无效值""
}
],
"image_message": [{
"key": "small_image_1550", //[帧号,图片流为空]
"value": "xxxx"
}],
"feature": [
//"有值,人脸特征值 1X512",人体特征值1x256,车辆特征值1x512;长度不一样,注意下!!!!!
],
"attribute": [{
"key": "person_gender",
"value": "0", //无效值""
"score": 0.947140694 //无效值-1
},
{
"key": "person_age",
"value": "5", //无效值""
"score": 0.726401389 //无效值-1
},
{
"key": "person_upper_wear",
"value": "0", //无效值""
"score": 0.974915206 //无效值-1
},
{
"key": "person_lower_wear",
"value": "0", //无效值""
"score": 0.981874764 //无效值-1
},
{
"key": "person_upper_color",
"value": "7", //无效值""
"score": 0.969852924 //无效值-1
},
{
"key": "person_lower_color",
"value": "2", //无效值""
"score": 0.908483326 //无效值-1
},
{
"key": "person_bag",
"value": "", //无效值""
"score": -1 //无效值-1
},
{
"key": "person_carrying_item",
"value": "", //无效值""
"score": -1 //无效值-1
},
{
"key": "person_cellphone",
"value": "", //无效值""
"score": -1 //无效值-1
},
{
"key": "person_face_mask",
"value": "", //无效值""
"score": -1 //无效值-1
},
{
"key": "person_glasses",
"value": "", //无效值""
"score": -1 //无效值-1
},
{
"key": "person_headwear",
"value": "", //无效值""
"score": -1 //无效值-1
},
{
"key": "person_is_human",
"value": "", //无效值""
"score": -1 //无效值-1
},
{
"key": "person_lower_cut",
"value": "", //无效值""
"score": -1 //无效值-1
},
{
"key": "person_occlusion",
"value": "", //无效值""
"score": -1 //无效值-1
},
{
"key": "person_orientation",
"value": "", //无效值""
"score": -1 //无效值-1
},
{
"key": "person_smoke",
"value": "", //无效值""
"score": -1 //无效值-1
},
{
"key": "person_umbrella",
"value": "", //无效值""
"score": -1 //无效值-1
},
{
"key": "person_upper_cut",
"value": "", //无效值""
"score": -1 //无效值-1
},
{
"key": "person_upper_wear_fg",
"value": "", //无效值""
"score": -1 //无效值-1
},
{
"key": "person_upper_wear_texture",
"value": "", //无效值""
"score": -1 //无效值-1
},
{
"key": "person_vehicle",
"value": "", //无效值""
"score": -1 //无效值-1
}
]
},
{
"class_name": "face", //目前只用到classname;保证相同的classname名字相同
"class_id": 0, //检测id.编码表统一id;
"rect": {
"x0": 1471,
"y0": 302,
"x1": 1514,
"y1": 344
},
"confidence": 0.4609375, //无效值-1
"track_id": "0", //跟踪id,无效值""
"score": -1, //无效值-1
"extra_message": [{
"key": "quality",
"value": "337.730316" //版本9.5以前 0-1000 版本10[0-1] //无效值""
},
{
"key": "image_key_frameid",
"value": "1132" //无效值""
},
{
"key": "track_location", //命名跟人脸保持一致
"value": "0" //无效值""
}
],
"image_message": [],
"feature": [
//"有值,人脸特征值 1X512",人体特征值1x256,车辆特征值1x512;长度不一样,注意下!!!!!
],
"attribute": [{
"key": "hairtype", //人脸属性字段和脸人保持一致
"value": "2", //无效值""
"score": 1 //无效值-1
},
{
"key": "hattype",
"value": "0", //无效值""
"score": 1 //无效值-1
},
{
"key": "glass",
"value": "0", //无效值""
"score": 0.001 //无效值-1
},
{
"key": "male",
"value": "0", //无效值""
"score": 0.001 //无效值-1
},
{
"key": "sunglass",
"value": "0", //无效值""
"score": 0.001 //无效值-1
},
{
"key": "age",
"value": "44.000000", //无效值""
"score": 1 //无效值-1
},
{
"key": "mask",
"value": "0", //无效值""
"score": 0.001 //无效值-1
},
{
"key": "nationtype",
"value": "", //无效值""
"score": 0 //无效值-1
},
{
"key": "beardtype",
"value": "", //无效值""
"score": 0 //无效值-1
}
]
},
{
"class_name": "nonvehicle",
"class_id": 3,
"rect": {
"x0": 838,
"y0": 413,
"x1": 1133,
"y1": 1029
},
"confidence": 0.855957031, //无效值-1
"track_id": "1275", //跟踪id,无效值""
"score": 0, //无效值-1
"extra_message": [{
"key": "quality",
"value": "0.947612" //无效值""
},
{
"key": "image_key_frameid",
"value": "1560" //无效值""
},
{
"key": "is_movement",
"value": "1" //无效值""
},
{
"key": "children_list", //非机动车绑定上的人体id
"value": "[28,32]" //无效值""
},
{
"key": "track_location", //命名跟人脸保持一致
"value": "0" //无效值""
},
{
"key": "plate_number", //命名跟人脸保持一致
"value": "["
川.E82164 ","
京1232 "]" //无效值""
}, {
"key": "plate_bbox", //命名跟人脸保持一致
"value": "[" {
"x0": 12,
"y0": 34,
"x1": 56,
"y1": 78
}
"," {
"x0": 120,
"y0": 304,
"x1": 156,
"y1": 718
}
"]" //无效值""
}
],
"image_message": [],
"feature": [
//"非机动车没特征"
],
"attribute": [{
"key": "nonvehicle_with_plate", //是否有牌
"value": "1", //无效值""
"score": 0.986151338 //无效值-1
},
{
"key": "nonvehicle_type", //类型
"value": "1", //无效值""
"score": 0.928723812 //无效值-1
},
{
"key": "nonvehicle_rider", //是否 人骑车
"value": "1", //无效值""
"score": 0.868380964 //无效值-1
},
{
"key": "nonvehicle_color", //颜色
"value": "0", //无效值""
"score": 0.786433458 //无效值-1
},
{
"key": "nonvehicle_special_type", //特殊类型非机动车
"value": "0", //无效值""
"score": 0.786433458 //无效值-1
}
]
},
{
"class_name": "vehicle",
"class_id": 2,
"rect": {
"x0": 51,
"y0": 161,
"x1": 693,
"y1": 633
},
"confidence": 0.896484375, //无效值-1
"track_id": "1264", //跟踪id,无效值""
"score": 0, //无效值-1
"extra_message": [{
"key": "quality",
"value": "0.901473" //无效值""
},
{
"key": "image_key_frameid", //推图的帧号
"value": "1182" //无效值""
},
{
"key": "is_movement",
"value": "1" //无效值""
},
{
"key": "plate_bbox", //车牌检测坐标框
"value": "{"
x0 ": 12,"
y0 ": 34,"
x1 ": 56,"
y1 ": 78}" //无效值""
},
{
"key": "children_list", //机动车绑定上的人体id
"value": "[63,144]" //无效值空""
},
{
"key": "track_location", //命名跟人脸保持一致
"value": "0" //无效值""
}
],
"image_message": [],
"feature": [
//"有值,人脸特征值 1X512",人体特征值1x256,车辆特征值1x512;长度不一样,注意下!!!!!
],
"attribute": [{
"key": "vehicle_with_plate",
"value": "1", //无效值""
"score": 1 //无效值-1
},
{
"key": "vehicle_type",
"value": "0", //无效值""
"score": 0.947163641 //无效值-1
},
{
"key": "vehicle_color",
"value": "6", //无效值""
"score": 0.96878314 //无效值-1
},
{
"key": "vehicle_roofrack",
"value": "0", //无效值""
"score": 0.98069191 //无效值-1
},
{
"key": "vehicle_skylight",
"value": "1", //无效值""
"score": 0.956553102 //无效值-1
},
{
"key": "vehicle_special_type",
"value": "0", //无效值""
"score": 0.362316638 //无效值-1
},
{
"key": "vehicle_dangerous",
"value": "0", //无效值""
"score": 0.9837538 //无效值-1
},
{
"key": "vehicle_occlusion", //占位符使用,没有实际效果
"value": "", //无效值""
"score": -1 //无效值-1
},
{
"key": "vehicle_brand", //占位符使用,没有实际效果
"value": "", //无效值""
"score": -1 //无效值-1
},
{
"key": "vehicle_person_safty", //占位符使用,没有实际效果
"value": "", //无效值""
"score": -1 //无效值-1
},
{
"key": "vehicle_person_phone", //占位符使用,没有实际效果
"value": "", //无效值""
"score": -1 //无效值-1
},
{
"key": "vehicle_person_drink", //占位符使用,没有实际效果
"value": "", //无效值""
"score": -1 //无效值-1
},
{
"key": "vehicle_person_smoke", //占位符使用,没有实际效果
"value": "", //无效值""
"score": -1 //无效值-1
},
{
"key": "plate_color", //车牌颜色
"value": "0", //无效值""
"score": 0.99 //无效值-1
},
{
"key": "plate_number", //车牌号码 识别
"value": "京NQ90E7", ////无效值""
"score": 0.99 //无效值-1
}
]
}
]
}],
"extra_message": [],
"image_message": []
}
}
详细说明 :
| 版本 | 算法总集版本号 | 备注 |
|---|---|---|
| 脸人机非全目标解析(新特征)-(2101008)-(v2.1.1) | 初始版本 |
1.服务接口调用时需要严格遵循服务鉴权规则,新老调用鉴权方式亦存在差异。
新调用鉴权规则请参见:开发指南 - 内网签名认证方式。
2.服务调用头信息
调用时header头信息X-APP-ID,Device-Uuid,Authorization必传
针对人脸/车辆属性检测、脸人机非解析、特征提取等结构化解析型算法通用接口参数定义
此类算法的attribute数组用于输出解析到的属性列表
此类算法的feature数组用于标识特征提取能力返回的特征向量,如果为人脸/车辆等特征提取算法,此字段不为空
class_name字段用于标识目标的类别
区域条件:
1、 目前不支持画区域;
2、 目前支持的 绑定 关系类型:
| 脸人绑定 |
|---|
| 人车辆绑定 |
| 人非机动车绑定 |
extra_message通用结构体说明:
| extra_message | Array | 额外输出信息 | |
|---|---|---|---|
| "key":"xxx", | string | 输出信息标签 | |
| "value": "xxx" | string | 输出信息值,无效值“-1” |
attribute通用结构体说明:
| attribute | Array | 额外输出信息 | |
|---|---|---|---|
| "key":"xxx", | string | 输出标签名字 | |
| "value": "0" | string | 输出值,无效值"" | |
| "score": 0.947163641 | float | 输出标签得分【有可能输出值为1,类型需要注意】,无效值-1 |
{
"code": 1019,
"data": {
"camera_id": "1",
"task_id": "task_1",
"algo_tasks": [{
"algo_config": {
"version": "algo_version",
"algo_roi": {
"is_full_region": true,
"region_mode": 1,
"roi_type": 1,
"roi_list": []
},
"extra_params": []
}
}],
"image": ""
}
}
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class HttpUtils {
public static void sendPostRequest() {
HttpURLConnection connection = null;
try {
String code = "code";
String url = "http://url:端口/aipass/aipassweb-api/openapi/openApi/v2/ai/2101008";
String appId = "appid";
String deviceUuid = "deviceUuid";
URL urlObj = new URL(url);
connection = ((HttpURLConnection) (urlObj.openConnection()));
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json");
connection.setRequestProperty("X-APP-ID", appId);
connection.setRequestProperty("Device-Uuid", deviceUuid);
connection.setRequestProperty("Authorization", "yourAuthorization");
connection.setDoOutput(true);
ObjectMapper objectMapper = new ObjectMapper();
ObjectNode requestBody = objectMapper.createObjectNode();
requestBody.put("code", 0);
requestBody.put("llm_check", 0);
ObjectNode dataNode = requestBody.putObject("data");
dataNode.put("task_id", "0d04322bee08401a9c15a5ef8643e64f");
dataNode.put("camera_id", "A15414521025");
ArrayNode algoTasksArray = dataNode.putArray("algo_tasks");
ObjectNode algoTaskNode = algoTasksArray.addObject();
ObjectNode algoConfigNode = algoTaskNode.putObject("algo_config");
algoConfigNode.put("version", "1.0.0");
ObjectNode algoRoiNode = algoConfigNode.putObject("algo_roi");
algoRoiNode.put("roi_type", 1);
ArrayNode roiListArray = algoRoiNode.putArray("roi_list");
ObjectNode roiListNode = roiListArray.addObject();
roiListNode.put("name", "61b3a095eb0bc49");
ArrayNode pointListArray = roiListNode.putArray("point_list");
ObjectNode pointNode = pointListArray.addObject();
pointNode.put("x", 0.0);
pointNode.put("y", 1.0);
ArrayNode extraParamsArray = roiListNode.putArray("extra_params");
ObjectNode extraParamNode = extraParamsArray.addObject();
extraParamNode.put("key", "type");
extraParamNode.put("value", "1");
algoRoiNode.put("is_full_region", true);
algoRoiNode.put("region_mode", 1);
ArrayNode extraParamsAlgoArray = algoConfigNode.putArray("extra_params");
ObjectNode extraAlgoParamNode = extraParamsAlgoArray.addObject();
extraAlgoParamNode.put("key", "");
extraAlgoParamNode.put("value", "");
dataNode.put(
"image",
"iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAFVBMVEX////7ODj+z8/9eHj9m5v9s7P7TEwZgBMVAAAACXBIWXMAAAsTAAALEwEAmpwYAAAATklEQVQokd2NQQqAQAzEMjNd//9kUXEXFw8eBMEcCiUlha9p8lspC6ukwDZHeBcBNcvUJICkAjwVheV2k4pUkMvzWo5U307kLiSNkz+wAvF5AMTthEMUAAAAAElFTkSuQmCC");
dataNode.put(
"image_url",
"http://10.127.156.152:8081/bucket/f7884c2f-0efc-42ae-0372-e30eddddc53b.jpg");
try (OutputStream os = connection.getOutputStream()) {
byte[] input = requestBody.toString().getBytes("utf-8");
os.write(input, 0, input.length);
}
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
try (BufferedReader br =
new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8"))) {
StringBuilder response = new StringBuilder();
String responseLine;
while ((responseLine = br.readLine()) != null) {
response.append(responseLine.trim());
}
String responseString = response.toString();
JsonNode jsonResponse = objectMapper.readTree(responseString);
JsonNode data = jsonResponse.get("data");
}
} else {
System.out.println("POST request not worked");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (connection != null) {
connection.disconnect();
}
}
}
}
import json
import requests
def send_post_request():
"""
发送POST请求到AI算法接口
"""
try:
# 配置参数
url = "http://url:端口/aipass/aipassweb-api/openapi/openApi/v2/ai/2101008"
app_id = "appid"
device_uuid = "deviceUuid"
authorization = "yourAuthorization"
# 构建请求头
headers = {
"Content-Type": "application/json",
"X-APP-ID": app_id,
"Device-Uuid": device_uuid,
"Authorization": authorization
}
# 构建请求体
request_body = {
"code": 0,
"llm_check": 0,
"data": {
"task_id": "0d04322bee08401a9c15a5ef8643e64f",
"camera_id": "A15414521025",
"algo_tasks": [
{
"algo_config": {
"version": "1.0.0",
"algo_roi": {
"roi_type": 1,
"roi_list": [
{
"name": "61b3a095eb0bc49",
"point_list": [
{
"x": 0.0,
"y": 1.0
}
],
"extra_params": [
{
"key": "type",
"value": "1"
}
]
}
],
"is_full_region": True,
"region_mode": 1
},
"extra_params": [
{
"key": "",
"value": ""
}
]
}
}
],
"image": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAFVBMVEX////7ODj+z8/9eHj9m5v9s7P7TEwZgBMVAAAACXBIWXMAAAsTAAALEwEAmpwYAAAATklEQVQokd2NQQqAQAzEMjNd//9kUXEXFw8eBMEcCiUlha9p8lspC6ukwDZHeBcBNcvUJICkAjwVheV2k4pUkMvzWo5U307kLiSNkz+wAvF5AMTthEMUAAAAAElFTkSuQmCC",
"image_url": "http://10.127.156.152:8081/bucket/f7884c2f-0efc-42ae-0372-e30eddddc53b.jpg"
}
}
# 发送POST请求
response = requests.post(
url=url,
headers=headers,
json=request_body,
timeout=30
)
# 处理响应
if response.status_code == 200:
response_data = response.json()
data = response_data.get("data")
print("POST请求成功")
return data
else:
print(f"POST请求失败,状态码: {response.status_code}")
return None
except Exception as e:
print(f"请求异常: {e}")
return None
# 使用示例
if __name__ == "__main__":
result = send_post_request()
if result is not None:
print("请求成功")
else:
print("请求失败")
| 标准属性 | |||||
|---|---|---|---|---|---|
| 算法 | 名称 | key | 枚举值 | value | 备注 |
| 全目标解析 | 是否戴眼镜 | glasses | 戴 | 1 | 人脸属性 |
| 不戴 | 2 | ||||
| 未知 | 3 | ||||
| 是否戴口罩 | mask | 戴 | 1 | ||
| 不戴 | 2 | ||||
| 未知 | 3 | ||||
| 是否戴墨镜 | sunglass | 戴 | 1 | ||
| 不戴 | 2 | ||||
| 未知 | 3 | ||||
| 性别 | sex | 男 | 1 | ||
| 女 | 2 | ||||
| 未知 | 3 | ||||
| 年龄 | age | 幼儿 | 0 | ||
| 青少年 | 1 | ||||
| 青年 | 2 | ||||
| 中年 | 3 | ||||
| 老年 | 4 | ||||
| 不确定 | 00 | ||||
| 头发 | hairtype | 光头 | 0 | ||
| 短发 | 2 | ||||
| 中长发(女士短发) | 3 | ||||
| 长发 | 1 | ||||
| 未知 | -1 | ||||
| 帽子 | hattype | 无帽子 | 0 | ||
| 普通帽子 | 1 | ||||
| 安全帽 | 2 | ||||
| 头盔 | 3 | ||||
| 未知 | -1 | ||||
| 民族分类 | nation | 汉族 | 0 | ||
| 维吾尔族 | 1 | ||||
| 黑人 | 2 | ||||
| 其他 | 3 | ||||
| 未知 | -1 | ||||
| 胡须分类 | beard | 一字胡 | 0 | ||
| 络腮胡 | 1 | ||||
| 少胡须或无胡须 | 2 | ||||
| 其他 | 3 | ||||
| 未知 | -1 | ||||
| 年龄 | age | 幼儿 | 0 | 人体属性 | |
| 青少年 | 1 | ||||
| 青年 | 4(图片流为4,视频流为2) | ||||
| 中年 | 5 | ||||
| 老年 | 3 | ||||
| 不确定 | -1 | ||||
| 背包 | bag | 无背包 | 0 | ||
| 单肩包 | 1 | ||||
| 双肩包 | 2 | ||||
| 不确定 | 00 | ||||
| 是否有手提物 | carrying_item | 无手提物 | 0 | ||
| 有手提物 | 1 | ||||
| 不确定 | 00 | ||||
| 手机 | cell_phone | 未使用手机 | 0 | ||
| 看手机 | 1 | ||||
| 打电话 | 2 | ||||
| 不确定 | 00 | ||||
| 是否戴口罩 | mask | 无口罩 | 0 | ||
| 戴口罩 | 1 | ||||
| 不确定 | 00 | ||||
| 是否性别 | gender | 男性 | 1 | ||
| 女性 | 2 | ||||
| 不确定 | 00 | ||||
| 是否戴眼镜 | glasses | 无眼镜 | 0 | ||
| 戴眼镜 | 1 | ||||
| 不确定 | 00 | ||||
| 是否戴帽子 | headwear | 无帽 | 052 | ||
| 普通帽 | 050 | ||||
| 安全帽 | 051 | ||||
| 不确定 | 00 | ||||
| 人体 | is_human | 非正常人体 | 1 | ||
| 正常人体 | 0 | ||||
| 不确定 | 00 | ||||
| 下身衣服颜色 | lower_color | 红 | 11 | ||
| 橙 | 12 | ||||
| 黄 | 13 | ||||
| 绿 | 14 | ||||
| 蓝 | 15 | ||||
| 紫 | 16 | ||||
| 粉 | 17 | ||||
| 黑 | 18 | ||||
| 白 | 19 | ||||
| 灰 | 20 | ||||
| 棕 | 21 | ||||
| 不确定 | 00 | ||||
| 是否截断 | lower_cut | 无下方截断 | 0 | ||
| 有下方截断 | 2 | ||||
| 不确定 | 00 | ||||
| 下身衣服 | lower_wear | 长裤 | 030 | ||
| 短裤 | 031 | ||||
| 长裙 | 032 | ||||
| 短裙 | 033 | ||||
| 不确定 | 00 | ||||
| 是否遮挡 | occlusion | 无遮挡 | 0 | ||
| 轻度遮挡 | 1 | ||||
| 重度遮挡 | 2 | ||||
| 不确定 | 00 | ||||
| 方向 | orientation | 正面 | 40 | ||
| 背面 | 41 | ||||
| 左侧面 | 42 | ||||
| 右侧面 | 43 | ||||
| 不确定 | 00 | ||||
| 是否吸烟 | smoke | 吸烟 | 1 | ||
| 未吸烟 | 0 | ||||
| 不确定 | 00 | ||||
| 是否打伞 | umberlla | 打伞 | 1 | ||
| 未打伞 | 0 | ||||
| 不确定 | 00 | ||||
| 上身衣服颜色 | upper_color | 红 | 11 | ||
| 橙 | 12 | ||||
| 黄 | 13 | ||||
| 绿 | 14 | ||||
| 蓝 | 15 | ||||
| 紫 | 16 | ||||
| 粉 | 17 | ||||
| 黑 | 18 | ||||
| 白 | 19 | ||||
| 灰 | 20 | ||||
| 棕 | 21 | ||||
| 不确定 | 00 | ||||
| 是否截断 | upper_cut | 无上方截断 | 0 | ||
| 有上方截断 | 1 | ||||
| 不确定 | 00 | ||||
| 上身衣服 | upper_wear | 长袖 | 0 | ||
| 短袖 | 1 | ||||
| 不确定 | 00 | ||||
| 衣服种类 | upper_wear_fg | T恤 | 20 | ||
| 无袖 | 21 | ||||
| 衬衫 | 22 | ||||
| 西装 | 23 | ||||
| 毛衣 | 24 | ||||
| 夹克 | 25 | ||||
| 羽绒服 | 26 | ||||
| 风衣 | 27 | ||||
| 外套 | 28 | ||||
| 不确定 | 00 | ||||
| 衣服款式 | upper_color_type | 纯色 | 0 | ||
| 图案 | 1 | ||||
| 碎花 | 2 | ||||
| 条纹或格子 | 3 | ||||
| 不确定 | 00 | ||||
| 交通工具 | vehicle | 无交通工具 | 0 | ||
| 骑摩托车 | 1 | ||||
| 骑自行车 | 2 | ||||
| 骑三轮车 | 3 | ||||
| 不确定 | 00 | ||||
| 是否为机动车 | bIsMotorVehicle | 是 | 1 | 机动车属性 | |
| 车辆是否遮挡 | vehicle_isOccluded | 否 | 0 | ||
| 是 | 1 | ||||
| 不确定 | 00 | ||||
| 车辆颜色 | car_color | 棕 | 0 | ||
| 黄 | 1 | ||||
| 蓝 | 2 | ||||
| 红 | 3 | ||||
| 绿 | 4 | ||||
| 黑 | 5 | ||||
| 白 | 6 | ||||
| 紫 | 7 | ||||
| 灰 | 8 | ||||
| 橘红 | 9 | ||||
| 粉 | 10 | ||||
| 其它 | 11 | ||||
| 未识别颜色 | -1 | ||||
| 车辆颜色 | vehicle_color | 棕 | 0 | ||
| 黄 | 1 | ||||
| 蓝 | 2 | ||||
| 红 | 3 | ||||
| 绿 | 4 | ||||
| 黑 | 5 | ||||
| 白 | 6 | ||||
| 紫 | 7 | ||||
| 灰 | 8 | ||||
| 橘红 | 9 | ||||
| 粉 | 10 | ||||
| 其它 | 11 | ||||
| 未识别颜色 | -1 | ||||
| 车辆类型 | vehicle_type | 小汽车 | 0 | ||
| 其它 | 4 | ||||
| SUV | 5 | ||||
| mpv(商务车) | 6 | ||||
| orv(越野车) | 7 | ||||
| bus(公交车)(只含市内公交) | 8 | ||||
| medium_coach(中型客车) | 9 | ||||
| large_coach(大型客车) | 10 | ||||
| pickup_coach(皮卡) | 11 | ||||
| mini_bus(面包车) | 12 | ||||
| small_truck(小型卡车) | 13 | ||||
| medium_truck(中型卡车) | 14 | ||||
| large_truck(大型卡车) | 15 | ||||
| 未识别 | 00 | ||||
| 车辆类型 | car_type | 小汽车 | 0 | ||
| 其它 | 4 | ||||
| SUV | 5 | ||||
| mpv(商务车) | 6 | ||||
| orv(越野车) | 7 | ||||
| bus(公交车)(只含市内公交) | 8 | ||||
| medium_coach(中型客车) | 9 | ||||
| large_coach(大型客车) | 10 | ||||
| pickup_coach(皮卡) | 11 | ||||
| mini_bus(面包车) | 12 | ||||
| small_truck(小型卡车) | 13 | ||||
| medium_truck(中型卡车) | 14 | ||||
| large_truck(大型卡车) | 15 | ||||
| 未识别 | 00 | ||||
| 车牌是否遮挡(暂时无效,算法测不支持) | license_isOccluded | 否 | 0 | ||
| 是 | 1 | ||||
| 不确定 | 00 | ||||
| 车牌类型 | licence_type | 蓝绿牌 | 010 | ||
| 蓝牌 | 011 | ||||
| 绿牌 | 012 | ||||
| 单层黄牌 | 013 | ||||
| 双层黄牌 | 014 | ||||
| 白牌 | 015 | ||||
| 双层白牌 | 016 | ||||
| 黑牌 | 017 | ||||
| 无牌 | 018 | ||||
| 大型新能源绿牌 | 019 | ||||
| 未识别车牌 | 00 | ||||
| 车牌类型 | plate_type | 蓝绿牌 | 010 | ||
| 蓝牌 | 011 | ||||
| 绿牌 | 012 | ||||
| 单层黄牌 | 013 | ||||
| 双层黄牌 | 014 | ||||
| 白牌 | 015 | ||||
| 双层白牌 | 016 | ||||
| 黑牌 | 017 | ||||
| 无牌 | 018 | ||||
| 大型新能源绿牌 | 019 | ||||
| 未识别车牌 | 00 | ||||
| 车内人员是否系安全带 | body_safty_type | 否 | 0 | ||
| 是 | 1 | ||||
| 不确定 | 00 | ||||
| 车内人员是否打电话 | body_phone_type | 否 | 0 | ||
| 是 | 1 | ||||
| 不确定 | 00 | ||||
| 车内人员是否喝水 | body_drink_type | 否 | 0 | ||
| 是 | 1 | ||||
| 不确定 | 00 | ||||
| 机动车品牌 | vehicle_brand_name | 占位 | -1 | ||
| 车内人员是否抽烟 | body_smooke_type | 否 | 0 | ||
| 是 | 1 | ||||
| 不确定 | 00 | ||||
| 是否有危险品 | vehicle_dangerous | 非危险品车 | 0 | ||
| 危险品车 | 1 | ||||
| 不确定 | 00 | ||||
| 是否有天窗 | vehicle_skylight | 无天窗 | 0 | ||
| 有天窗 | 1 | ||||
| 不确定 | 00 | ||||
| 是否有顶架 | vehicle_roofrack | 无车顶架 | 0 | ||
| 有车顶架 | 1 | ||||
| 不确定 | 00 | ||||
| 是否有牌 | vehicle_plate | 否 | 0 | ||
| 是 | 1 | ||||
| 不确定 | 00 | ||||
| 机动车特殊类型 | vehicle_sp_type | 其他 | 0 | ||
| 警车 | 1 | ||||
| 救护车 | 2 | ||||
| 消防车 | 3 | ||||
| 校车 | 4 | ||||
| 环卫车 | 5 | ||||
| 市政工作车 | 6 | ||||
| 油罐车 | 7 | ||||
| 气罐车 | 8 | ||||
| 叉车 | 9 | ||||
| 搅拌车 | 10 | ||||
| 挖掘机 | 11 | ||||
| 装载车 | 12 | ||||
| 推土车 | 13 | ||||
| 压路车 | 14 | ||||
| 起重车 | 15 | ||||
| 渣土车 | 16 | ||||
| 不确定 | 00 | ||||
| 车牌号 | plate_number | ||||
| 车牌框 | plate_bbox | ||||
| 车牌号 | licence_num | ||||
| 车牌框 | license_bbox | ||||
| 车辆品牌名称(实际告警没有此key) | vehicle brand name | ||||
| 车牌类型名称 | licence_type_name | ||||
| 车牌检测类别 | licence_className | ||||
| 车内人员box | body_bbox | ||||
| 非机动车类型 | non_vehicle_type | 自行车 | 0 | 非机动车属性 | |
| 摩托车 | 1 | ||||
| 三轮车(敞篷) | 2 | ||||
| 三轮车(封闭) | 3 | ||||
| 不确定 | 00 | ||||
| 是否有非机动车驾驶人 | non_vehicle_rider | 否 | 0 | ||
| 是 | 1 | ||||
| 不确定 | 00 | ||||
| 非机动车颜色 | non_vehicle_color | 棕 | 0 | ||
| 黄 | 1 | ||||
| 蓝 | 2 | ||||
| 红 | 3 | ||||
| 绿 | 4 | ||||
| 黑 | 5 | ||||
| 白 | 6 | ||||
| 紫 | 标准地域编码x 7 | ||||
| 灰 | 8 | ||||
| 橘红 | 9 | ||||
| 粉 | 10 | ||||
| 其它 | 11 | ||||
| 未识别颜色 | -1 | ||||
| 非机动朝向 | non_vehicle_orien | 不确定 | 00 | ||
| 上 | 0 | ||||
| 下 | 1 | ||||
| 左 | 2 | ||||
| 右 | 3 | ||||
| 左上 | 4 | ||||
| 右上 | 5 | ||||
| 左下 | 6 | ||||
| 右下 | 7 | ||||
| 非机动车特殊类型 | non_vehicle_sp_type | 外卖车 | 0 | ||
| 共享单车 | 1 | ||||
| 共享电动车 | 2 | ||||
| 快递车 | 3 | ||||
| 警车 | 4 | ||||
| 非特殊类型 | 5 | ||||
| 不确定 | 00 | ||||
| 非机动车是否遮挡 | non_vehicle_isOccluded | 有 | 0 | ||
| 无 | 1 | ||||
| 不确定 | 00 | ||||
| 非机动车是否有牌 | non_vehicle_with_plate | 否 | 0 | ||
| 是 | 1 | ||||
| 不确定 | 00 | ||||
| 非机动车检测类别 | non_vehicle_className | 不确定 | 00 | ||
| 车牌框 | plate_bbox | ||||
| 车牌号 | plate_number |
通用状态码请参见【状态码】中的【网关认证】,其余状态码如下:
| 返回编码 | 返回信息 | 说明 |
|---|---|---|
| 10000 | 成功 | 服务执行成功 |
| 10301 | 服务必填参数缺失 | 服务必填参数缺失或未填写 |
| 10304 | 请求参数格式错误 | 服务入参格式错误 |
| 10800 | 图片下载异常 | 图片下载异常 |
| 10903 | 服务执行失败 | 服务执行失败 |
| 序号 | 地域编码(3位数字) | 地域名称 |
|---|---|---|
| 1 | 800 | 集团 |
| 2 | 811 | 北京市 |
| 3 | 812 | 天津市 |
| 4 | 813 | 河北省 |
| 5 | 814 | 山西省 |
| 6 | 815 | 内蒙古自治区 |
| 7 | 821 | 辽宁省 |
| 8 | 822 | 吉林省 |
| 9 | 823 | 黑龙江省 |
| 10 | 831 | 上海市 |
| 11 | 832 | 江苏省 |
| 12 | 833 | 浙江省 |
| 13 | 834 | 安徽省 |
| 14 | 835 | 福建省 |
| 15 | 836 | 江西省 |
| 16 | 837 | 山东省 |
| 17 | 841 | 河南省 |
| 18 | 842 | 湖北省 |
| 19 | 843 | 湖南省 |
| 20 | 844 | 广东省 |
| 21 | 845 | 广西壮族自治区 |
| 22 | 846 | 海南省 |
| 23 | 850 | 重庆市 |
| 24 | 851 | 四川省 |
| 25 | 852 | 贵州省 |
| 26 | 853 | 云南省 |
| 27 | 854 | 西藏自治区 |
| 28 | 861 | 陕西省 |
| 29 | 862 | 甘肃省 |
| 30 | 863 | 青海省 |
| 31 | 864 | 宁夏回族自治区 |
| 32 | 865 | 新疆维吾尔自治区 |