创建边缘高密度人群统计检测作业
功能介绍
该API用于对视频中的高密度人群总数进行统计,定期上报告警。
- 目前支持H264、H265编码格式的RTSP视频流。
调试
您可以在API Explorer中调试该接口。
URI
- URI格式
POST /v2/{project_id}/services/c-crowdcount-edge/tasks
- 参数说明
参数
是否必选
类型
说明
project_id
是
String
服务所在区域对应的项目ID,获取方法请参见获取项目ID。
请求
- 请求样例(摄像头输入+DIS/Webhook输出)
POST /v2/6204a5bd270343b5885144cf9c8c158d/services/c-crowdcount-edge/tasks { "name": "crowdcount-edge-task", "description": "Crowdcounttedetection task test", "input": { "type": "edgecamera", "data": [ { "id": "aec5857c-222f-4aa9-be39-23654e118886", "index": 0 } ] }, "output": { "dis": { "stream_name": "crowdcount-edge" }, "webhook": { "url": "https://apigw.huawei.com/api/event/callback", "headers": { "content-type": "application/json" } } }, "service_version": "3.0", "resource_order_id": "840a5cf90d4a4bbaa71f251dfe8fe64e", "edge_pool_id": "8dcf5ec7bc4d4a26aa1d3e1bb5ed2b5a", "service_config": { "common": { "banner_detection_sw": 1, "banner_threshold": "2", "alarm_threshold": "5", "sampling_time_interval": 8, "density_sw": 1, "visualization_output_sw": 1, "image_compression_ratio": 80, "target_roi": "{\"polygons\":[{\"data\":[[100,100],[1800,100],[1800,1000],[100,1000]]}]}" } } }
- 请求样例2(edgerestful输入+DIS/Webhook输出)
POST /v2/6204a5bd270343b5885144cf9c8c158d/services/c-crowdcount-edge/tasks { "name": "crowdcount-edge-task", "description": "Crowdcounttedetection task test", "input": { "type": "edgerestful", "data": [ { "index": 0, "url":"https://100.127.134.69:554/test/data", "certificate_check": false, "rtsp_path_in_response": "data/url" } ] }, "output": { "dis": { "stream_name": "crowdcount-edge" }, "webhook": { "url": "https://apigw.huawei.com/api/event/callback", "headers": { "content-type": "application/json" } } }, "service_version": "3.0", "resource_order_id": "840a5cf90d4a4bbaa71f251dfe8fe64e", "edge_pool_id": "8dcf5ec7bc4d4a26aa1d3e1bb5ed2b5a", "service_config": { "common": { "banner_detection_sw": 1, "banner_threshold": "2", "alarm_threshold": "5", "sampling_time_interval": 8, "density_sw": 1, "visualization_output_sw": 1, "image_compression_ratio": 80, "target_roi": "{\"polygons\":[{\"data\":[[100,100],[1800,100],[1800,1000],[100,1000]]}]}" } } }
- 请求样例3(VCN输入+DIS/Webhook输出)
POST /v2/6204a5bd270343b5885144cf9c8c158d/services/c-crowdcount-edge/tasks { "name": "crowdcount-edge-task", "description": "Crowdcounttedetection task test", "input": { "type": "vcn", "vcn":{ "ip":"172.100.119.6", "password":"CQeNfcRLwyMvH77AkDBaPS+BKXdFu/1bAXtIMNTx3QPbVewjipNq06nNodxWI28I1lCUsvv2+wB1joepzynLVW3g2nz0k9vaCRDoK6=", "port":"4675", "username":"testname" }, "data": [ { "index": 0, "stream_type": 1, "device_id":"07211540881586160101#f7964493ff764bbf9294d58b22e63de6" } ] }, "output": { "dis": { "stream_name": "crowdcount-edge" }, "webhook": { "url": "https://apigw.huawei.com/api/event/callback", "headers": { "content-type": "application/json" } } }, "service_version": "3.0", "resource_order_id": "840a5cf90d4a4bbaa71f251dfe8fe64e", "edge_pool_id": "8dcf5ec7bc4d4a26aa1d3e1bb5ed2b5a", "service_config": { "common": { "banner_detection_sw": 1, "banner_threshold": "2", "alarm_threshold": "5", "sampling_time_interval": 8, "visualization_output_sw": 1, "density_sw": 1, "image_compression_ratio": 80, "target_roi": "{\"polygons\":[{\"data\":[[100,100],[1800,100],[1800,1000],[100,1000]]}]}" } } }
- 参数说明
参数
是否必选
类型
说明
name
是
String
作业名称,只能由字母(a~zA~Z)、数字(0~9)、中划线(-)、下划线(_)组成,长度范围为[1,100]。
description
否
String
作业描述信息,最大长度为500字符长度。
input
是
Object
视频数据输入列表,支持从指定的边缘摄像头读取数据,即输入类型为“edgecamera”,“edgerestful”,“VCN”。
详细参数定义参见task.input(任务输入参数)。
service_version
是
String
功能版本号,版本号为3.0。边缘算法版本支持的显卡硬件为T4和华为自研Davinci芯片。
resource_order_id
是
String
购买的算法能力包ID,在服务界面购买算法能力包获取。
edge_pool_id
是
String
边缘运行池ID,获取方法参见创建边缘运行池。
output
是
Object
结果数据的输出列表,目前支持以下输出类型:- DIS:将结果输出到您指定的DIS通道 。
- Webhook:将结果输出到Webhook URL。
- Localpath:将作业的运行结果保存在边缘节点本地(节点必须为linux系统),必须为linux路径,例如“/opt/cloud/”。
详细参数定义见task.output(任务输出参数)。
service_config
否
Object
服务的算法配置,配置参数见•service_config参数说明。
- service_config中common参数说明
字段
是否必选
类型
说明
alarm_threshold
否
String
人数告警阈值列表,默认值:50人,取值范围为正整数。当视频帧中出现大于该阈值的人数时,通过JSON输出告警图片。该字段的输入情况如下:可以针对每个ROI区域输入不同的告警阈值,每个输入用空格进行分隔。
若用户输入的人数告警阈值列表多于实际的ROI个数,则取前边的人数。
如果输入的人数告警阈值列表少于实际的ROI个数,则比ROI个数少的部分用默认值补齐。
举例:ROI有3个,当输入25 30 20,只要有其中一个ROI告警,则发送图片。当输入25 15时,则第三个ROI会用默认值50补齐,也即变成25 15 50。当输入25 36 23 40时,算法自动选择前3个,也即25 36 23。
sampling_time_interval
否
Int
视频采样处理时间间隔,默认值:10s,取值范围[1, 30],单位秒。默认10秒采样一次视频画面,两次处理将会间隔N帧画面。
N的计算方式:sampling_time_interval * 视频fps。例如:视频fps=25,采样时间1秒,则两次处理之间会跳过25帧画面。
banner_detection_sw
否
Int
横幅检测开关,默认值0,取值范围[0,1]。当打开横幅检测开关时,会对视频画面中的ROI区域进行横幅检测。
banner_threshold
否
String
横幅告警阈值列表,默认值1,取值范围为正整数。该参数的用法可以参考alarm_threshold字段。
visualization_output_sw
否
Int
可视化输出开关,默认是0,取值范围[0 1]。默认每个ROI区域检测到的人数大于告警阈值时,只会发送原图信息。只有打开可视化开关后,才会将检测到的行人和横幅进行可视化输出。可视化场景如下:
- 检测到单个行人,会用红色框进行标注。
- 检测到游行示威的横幅,会用红色框标注。
- 如果检测到密集人群,会对该区域进行颜色渲染。
- 每个ROI框会用黄色多边形在画面中标注。
image_compression_ratio
否
Int
对应控制台的界面参数“图片压缩比”。
图片压缩百分比,取值范围为[20,100]。
默认值:90,表示图片压缩比为90%
density_sw
否
Int
密度估计开关。用户可自定义是否启用密度估计模型来评估人数统计结果。推荐当人数较多、告警人数阈值较大的场景启用密度估计模型;当人数较少、告警人数阈值较低的场景可不用密度估计模型。
默认启用密度估计模型,取值为1,取值范围是[0, 1]
target_roi
否
String
对应控制台的界面参数“检测区域设置”。
表示检测区域,该字段为JSON格式的字符串,API调用时需要加转义符。详细JSON格式参见target_roi(目标区域)。
例如:
{"polygons":[{"data":[[84,389],[1840,349],[1824,526],[78,526]]}]}
参数没有携带时,默认区域为整个视频帧。
响应
- 响应样例
[ { "id": "we2de51e12eb47aaaafa36c2b458efr5" } ]
- 返回作业ID列表
参数
类型
说明
id
String
作业ID。
统计结果
- 输出JSON数据流到DIS指定的通道,包括告警结构化数据和图片数据。
- JSON结果示例
{ "event_type": 524288, "task_id": "d1cde51e12eb47aaaafa36c2b4584b5c", "stream_id": "test_camera", "timestamp": 1527603463, "message_id": "E87B6D7C-4FFD-11EA-AD9D-34B354BC6688", "image_base64": "/3j24AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQE...", "data": { "scene_type": 1, "alarm_type": 2, "event_set": [{ "crowd_count": 14, "banner_count": 5, "polygon": [ [400, 200], [1280, 200], [1280, 720], [400, 720] ] }] } }
- JSON格式说明
字段
类型
说明
stream_id
String
摄像头ID。
event_type
Uint64
快速标识高密人群统计算法的输出消息类型,高密人群统计算法其值固定为524288,对应16进制为 0x 0000 0000 0008 0000。
task_id
String
作业ID。
timestamp
Uint64
触发告警时间点的时间戳。
message_id
String
告警ID,生成的唯一告警事件UUID。
image_base64
String
告警时刻输入的视频图像的Base64编码结果。
data
Object
业务输入内容。
- data参数格式说明
字段
类型
说明
scene_type
Int
场景类型,固定为1。
alarm_type
Int
告警类型,主要取值为0,1,2。取值越高,告警类型越重要。当取值0时,表示没有上报告警(即没有人数超过告警阈值,或者检测到的横幅数没有超过阈值)。当取值为1时,表示检测到的人数超过了人数告警阈值。当取值为2时,表示不仅人数超过阈值,同时横幅也超过了阈值。
event_set
List<Object>
输出结果列表,上报每组数据告警事件多边形区域及其每个区域的统计结果,包括人群数和横幅数。
- event_set参数格式说明
字段
类型
说明
polygon
List<Object>
多边形区域,例如[[400, 200],[1280, 200],[1280, 720][400, 720]],按照点的顺序组合成闭环区域。
多边形区域为用户输入的检测区域。
crowd_count
Int
当前区域统计的人数。
banner_count
Int
当前区域统计的横幅个数。
返回值
- 正常
- 异常
返回值
说明
400 Bad Request
请求错误,具体返回错误码请参考错误码。
401 Unauthorized
鉴权失败。
403 Forbidden
没有操作权限。
404 Not Found
找不到资源。
500 Internal Server Error
服务内部错误。
503 Service Unavailable
服务不可用。