
# head_shoulder_data 头肩业务
#### 功能介绍
头肩业务：人群密度，排队长度，过线计数与人数统计相关的场景的智能业务。
头肩业务消息体的message_type值为head_shoulder_data。
目前行业视频管理服务会处理以下场景：
itgt_type/target_type枚举值：
- 12 人群密度（摄像机SDC/NVR800开启人群密度功能，会自动抓拍区域内人群，提取[人群信息]，如人群密度、人数等）
- 13 排队长度（摄像机SDC/NVR800开启排队长度功能，会自动抓拍区域内的排队队列，提取[排队信息]，如排队人数、排队时长等）
- 15 过线计数（摄像机SDC/NVR800开启过线计数功能，绘制一条线，指定进入和离开方向，有人通过线，则会记录[过线信息]，如进入总人数、离开总人数等）
 
表1message_type为head_shoulder_data时，data结构体如下： 
| 字段名         | 类型                                                               | 说明                                             |
|:---|:---|:---|
| device_id   | String                                                           | 设备ID，**正常情况下不为空，必传**                           |
| channel_id  | String                                                           | 通道ID，**正常情况下不为空，必传**                           |
| data_id     | String                                                           | 数据ID：**正常情况下不为空，必传**。此场景没有图片上传，无法通过data_id获取图片 |
| report_time | String                                                           | 上报时间：示例：2021-03-15T16:43:00+08:00              |
| data        | [Data] object | 业务信息                                           |
   
 表2Data 
| 字段名     | 类型                                                                   | 说明     |
|:---|:---|:---|
| common  | [Common] object | 通用数据定义 |
| rule    | [Rule] object       | 规则数据定义 |
| targets | [Target] object     | 目标数据定义 |
   
 表3Common 
| 字段名                      | 类型     | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|
| channel_id               | Int64  | 通道ID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| channel_id_ex            | Int64  | 相机扩展通道ID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| pts                      | Int64  | 时间戳                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| sdc_device_id            | String | 主从机设备ID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| sdc_uuid                 | String | 摄像机视频源通道号                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| intelligence_type        | Int    | 智能类型                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| image_height             | Int    | 图片高度                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| image_width              | Int    | 图片宽度                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| meta_type_mask           | Int    | 元数据类型掩码 枚举值： - 1 框数据  - 2 图数据  - 8 保活数据  - 16 告警数据   |
| intelligent_target_index | Int    | 智能目标/业务类型索引                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| target_time_domain_info  | Int    | 配合索引使用，标识三层数据时域信息 枚举值： - 0 实时框数据（检测框，规则框数据，用于复合流请流）  - 1 目标等其他数据（目标抓拍，定时上报，用于后端储存检索）                                                                                                                                                                |
   
 表4Rule 
| 字段名                    | 类型                                                                    | 说明                                                                                                                           |
|:---|:---|:---|
| rule_line_dir          | Int                                                                   | 规则线方向                                                                                                                        |
| rule_line_pos          | [MetaLine] object | 规则线位置                                                                                                                        |
| rule_line_pos_r        | [MetaLine] object | 规则线位置(相对位置)                                                                                                                  |
| rule_type              | Int                                                                   | 规则类型，参考附录[规则线类型](https://support.huaweicloud.com/api-ivm/ivm_03_0142.html#ZH-CN_TOPIC_0000001758544633__table27021940182213) |
| rule_area_pos          | [MetaArea] object   | 规则框位置                                                                                                                        |
| rule_area_pos_relative | [MetaArea] object   | 规则框位置(相对位置)                                                                                                                  |
   
 表5MetaLine 
| 字段名 | 类型    | 说明  |
|:---|:---|:---|
| x1  | Int64 | 横坐标 |
| x2  | Int64 | 横坐标 |
| y1  | Int64 | 纵坐标 |
| y2  | Int64 | 纵坐标 |
   
 表6MetaArea 
| 字段名    | 类型                                                                        | 说明                       |
|:---|:---|:---|
| num    | Int                                                                       | 框线坐标点数量：框线为多边形，这里表示顶点的个数 |
| points | Array of [Point] Objects | 每个坐标点的具体坐标               |
   
 表7Point 
| 字段名 | 类型  | 说明  |
|:---|:---|:---|
| x   | Int | 横坐标 |
| y   | Int | 纵坐标 |
   
 表8Target 
| 字段名                     | 类型                                                               | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
|:---|:---|:---|
| human_count_all_in_num  | Int                                                              | 过线计数进入总人数                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| human_count_all_out_num | Int                                                              | 过线计数离开总人数                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| human_count_in          | Int                                                              | 进入人数                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| human_count_out         | Int                                                              | 离开人数                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| human_time_start        | Int64                                                            | 计时开始时间：单位毫秒/ms                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| pic_snapshot_dst_offset | Int64                                                            | 夏令时偏移时间：单位秒/s                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| pic_snapshot_timems     | Int64                                                            | 抓拍时间：单位毫秒/ms                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| pic_snapshot_tzone      | Int64                                                            | 抓拍时区：单位毫秒/ms 东区为+ 西区为-                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| area_ratio              | Int                                                              | 人群密度检测算法人群密度                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| head_shoulder_pos       | [Rect] object | 人群密度检测算法返回框                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| human_time_start        | Int64                                                            | 计时开始时间：单位毫秒/ms                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| human_time_stop         | Int64                                                            | 计时结束时间：单位/ms                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| people_num              | Int                                                              | 人群密度检测算法人数                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| queue_time              | Int                                                              | 排队时长                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| shoulder_num            | Int                                                              | 头肩个数                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| target_type             | Int                                                              | 智能业务场景 枚举值： - 12 人群密度  - 13 排队长度  - 15 过线计数   |
   
 表9Rect 
| 字段名    | 类型  | 说明                                              |
|:---|:---|:---|
| x      | Int | 上层业务检测框左上角坐标点计算方式，x1 = x \*全景图像素宽度/ 10000       |
| y      | Int | 上层业务检测框左上角坐标点计算方式，y1 = y \*全景图像素高度/ 10000       |
| width  | Int | 上层业务检测框宽度计算方式 widht1 = widht \*全景图像素宽度/ 10000   |
| height | Int | 上层业务检测框长度计算方式 height1 = height \*全景图像素高度/ 10000 |
   
- 示例一、人群密度
```
{
    "message_id": 1676823431368569189,
    "message_type": "head_shoulder_data",
    "data": {
        "device_id": "HOLO123***",
        "channel_id": "0",
        "data_id": "167682343135900410410000rwnwv040",
        "report_time": "2023-02-20T00:17:11+08:00",
        "data": {
            "common": {
                "channel_id": 101,
                "channel_id_ex": 101,
                "intelligent_target_index": 9223372036854775808,
                "meta_type_mask": null,
                "pts": 15360490474,
                "sdc_uuid": "e15ee2b3-83c2-073a-28e1-378e9612aa71",
                "target_time_domain_info": 1
            },
            "rule": {
                "rule_line_dir": 1,
                "rule_line_pos": {
                    "x1": 20,
                    "y1": 144,
                    "x2": 340,
                    "y2": 144
                },
                "rule_line_pos_r": {
                    "x1": 568,
                    "y1": 5000,
                    "x2": 9659,
                    "y2": 5000
                },
                "rule_type": 9
            },
            "targets": [
                {
                    "area_ratio": 0,
                    "head_shoulder_pos": {
                        "x": 5795,
                        "y": 4270,
                        "width": 653,
                        "height": 1006
                    },
                    "human_count_all_in_num": 12,
                    "human_count_all_out_num": 0,
                    "human_count_in": 0,
                    "human_count_out": 0,
                    "human_time_start": 18446744073696131378,
                    "human_time_stop": 18446744073696136378,
                    "people_num": 1,
                    "pic_snapshot_dst_offset": 0,
                    "pic_snapshot_timems": 51767620,
                    "pic_snapshot_tzone": 28800000,
                    "queue_time": 0,
                    "shoulder_num": 0,
                    "target_type": 12
                }
            ]
        }
    },
    "test": false
}
```
- 示例二、排队长度
```
{
    "message_id": 1676874817394175412,
    "message_type": "head_shoulder_data",
    "data": {
        "device_id": "123456TEST***",
        "channel_id": "0",
        "data_id": "167687481124123400400000ayhea040",
        "report_time": "2023-02-20T14:33:37+08:00",
        "data": {
            "common": {
                "channel_id": 101,
                "channel_id_ex": 101,
                "intelligent_target_index": 4611686018427387904,
                "meta_type_mask": 3,
                "pts": 1194366429599,
                "sdc_uuid": "asdzxq4ad-3d12-1dcc-e88a-60242fc39ab9",
                "target_time_domain_info": 1
            },
            "rule": {
                "rule_area_pos": {
                    "num": 7,
                    "points": [
                        {
                            "x": 0,
                            "y": 133
                        },
                        {
                            "x": 159,
                            "y": 59
                        },
                        {
                            "x": 210,
                            "y": 41
                        },
                        {
                            "x": 238,
                            "y": 55
                        },
                        {
                            "x": 174,
                            "y": 85
                        },
                        {
                            "x": 133,
                            "y": 128
                        },
                        {
                            "x": 1,
                            "y": 243
                        }
                    ]
                },
                "rule_area_pos_relative": {
                    "num": 7,
                    "points": [
                        {
                            "x": 0,
                            "y": 4618
                        },
                        {
                            "x": 4517,
                            "y": 2048
                        },
                        {
                            "x": 5965,
                            "y": 1423
                        },
                        {
                            "x": 6761,
                            "y": 1909
                        },
                        {
                            "x": 4943,
                            "y": 2951
                        },
                        {
                            "x": 3778,
                            "y": 4444
                        },
                        {
                            "x": 28,
                            "y": 8437
                        }
                    ]
                },
                "rule_type": 11
            },
            "targets": [
                {
                    "human_time_start": 1676874816265,
                    "human_time_stop": 1676874817273,
                    "pic_snapshot_dst_offset": 0,
                    "pic_snapshot_tzone": 28800000,
                    "queue_time": 0,
                    "shoulder_num": 0,
                    "target_type": 13
                }
            ]
        }
    },
    "test": false
}
```
- 示例三、过线计数
```
{
    "message_id": 1676713666444641343,
    "message_type": "head_shoulder_data",
    "data": {
        "device_id": "210123456SMY***",
        "channel_id": "0",
        "data_id": "167671366643600420420000kcxdq090",
        "report_time": "2023-02-18T17:46:41+08:00",
        "data": {
            "common": {
                "channel_id": 101,
                "channel_id_ex": 101,
                "intelligent_target_index": 2305843009213693952,
                "meta_type_mask": 3,
                "pts": 0,
                "sdc_uuid": "d5b7fae2-d83e-c441-d1ae-b699d3d84a74",
                "target_time_domain_info": 1
            },
            "rule": {
                "rule_line_dir": 1,
                "rule_line_pos": {
                    "x1": 95,
                    "y1": 203,
                    "x2": 271,
                    "y2": 210
                },
                "rule_line_pos_r": {
                    "x1": 2698,
                    "y1": 7048,
                    "x2": 7698,
                    "y2": 7291
                },
                "rule_type": 9
            },
            "targets": [
                {
                    "human_count_all_in_num": 0,
                    "human_count_all_out_num": 0,
                    "human_count_in": 0,
                    "human_count_out": 0,
                    "human_time_start": 1676713541166,
                    "pic_snapshot_dst_offset": 0,
                    "pic_snapshot_timems": 1676713601160,
                    "pic_snapshot_tzone": 28800000,
                    "target_type": 15
                }
            ]
        }
    },
    "test": false
}
```
