更新时间:2022-03-17 GMT+08:00
分享

创建云上高密度人群统计作业

功能介绍

该API可分析实时视频流,每隔一段时间采样一帧视频画面,定期上报告警。

适用人群密度大的场景,例如视频画面出现几十人甚至上百人。

  • 视频编码格式要求为H264或者H265。

调试

您可以在API Explorer中调试该接口。

URI

  • URI格式
    POST /v2/{project_id}/services/c-crowdcount-cloud/tasks
  • 参数说明

    参数

    是否必选

    类型

    说明

    project_id

    String

    服务所在区域对应的项目ID,获取方法请参见获取项目ID

请求

  • 请求样例(VIS输入+DIS输出)
    POST /v2/6204a5bd270343b5885144cf9c8c158d/services/c-crowdcount-cloud/tasks
    {
        "name": "crowdcount-cloud-task",
        "input": {
            "type": "vis",
            "data": [
                {
                    "stream_name": "vis-campusgo",
                    "index": 0
                }
            ]
        },
        "output": {
            "dis": {
                "stream_name": "dis-campusgo"
            }
        },
        "service_version": "3.0",
        "resource_order_id": "840a5cf90d4a4bbaa71f251dfe8fe64e",
        "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]]}]}"
            }
       }
    }            
  • 参数说明

    参数

    是否必选

    类型

    说明

    name

    String

    作业名称,只能由中文、字母(a~zA~Z)、数字(0~9)、中划线(-)、下划线(_)组成,长度范围为[1,100]。

    description

    String

    作业描述信息,最大长度为500字符长度。

    input

    Object

    视频数据输入列表,目前云上高密度人群统计支持以下输入类型:
    • vis:从视频接入服务中读取视频数据。

    详细参数定义参见task.input(任务输入参数)

    service_version

    String

    功能版本号,版本号为3.0。

    resource_order_id

    String

    购买的算法能力包ID,在服务界面购买算法能力包获取。

    output

    Object

    结果数据的输出列表,目前支持将结果输出到您指定的通道中,输出类型为“dis”

    详细参数定义参见task.output(任务输出参数)

    service_config

    Object

    服务的算法配置,配置参数见ServiceConfig参数说明

  • service_config参数说明

    字段

    是否必选

    类型

    说明

    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区域检测到的人数大于告警阈值时,只会发送原图信息。只有打开可视化开关后,才会将检测到的行人和横幅进行可视化输出。可视化场景如下:

    1. 检测到单个行人,会用红色框进行标注。
    2. 检测到游行示威的横幅,会用红色框标注。
    3. 如果检测到密集人群,会对该区域进行颜色渲染。
    4. 每个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": "3d7c81cf35784d88a4e26066bcc5debd"
      }
    ]
  • 返回作业ID列表

    参数

    类型

    说明

    id

    String

    作业ID。

统计结果

  • 输出JSON数据流到DIS指定的通道,包括告警结构化数据和图片数据。
  • JSON结果示例
    {
        "event_type": 524288,
        "task_id": "3d7c81cf35784d88a4e26066bcc5debd",
        "stream_id": "vis-campusgo",
        "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

    该字段为VIS视频流名称。

    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编码结果。

    • 当产生告警时,也就是alarm_type等于1或者2时,会产生base64编码。
    • 当alarm_type=0时,该字段为空。
    • 如果用户选择可视化输出,则输出可视化图片base64编码。如果用户关闭可视化输出,则输出原图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

    当前区域统计的横幅个数

返回值

  • 正常

    201

  • 异常

    返回值

    说明

    400 Bad Request

    请求错误,具体返回错误码请参考错误码

    401 Unauthorized

    鉴权失败。

    403 Forbidden

    没有操作权限。

    404 Not Found

    找不到资源。

    500 Internal Server Error

    服务内部错误

    503 Service Unavailable

    服务不可用。

分享:

    相关文档

    相关产品