
# 车型车标技能
#### 技能描述
面向智慧门店的汽车类型与品牌识别技能。本技能使用多个深度学习算法，实时分析视频流，对门店入口处的车辆进行抓拍，识别该车的品牌和类型（轿车/SUV等）并将识别结果上传至您的后台系统。
摄像头部署建议请参见[摄像头部署]。
技能配置项请参见[运行时配置参数]。
技能接口设计请参见[技能结果上传接口]。
#### 基本信息
车型车标技能的基本信息如[表1]所示。
 表1技能参数说明 
| 参数      | 说明                               |
|:---|:---|
| 技能名称    | 车型车标-30天免费                       |
| 应用场景    | 智慧门店                             |
| 支持固件版本  | HiLens Framework 1.1.2及以上，DDK887 |
| 最大路数    | 最多2路                             |
| 视频流传输协议 | RTSP                             |
| 输入方式    | 外接IPC摄像头                         |
| 输出方式    | POST                             |
   
 #### 摄像头部署
摄像头的架设会影响车型车标模型的准确率。在实际架设中，尽量保证拍摄画面清晰，光照充足，汽车角度较正，无遮挡，比如前边的车容易挡住后边的车。
**摄像头参数基本设置**
不同品牌的摄像头都有一些基本的视频设置，例如分辨率、帧率和码率等，参数要求如[表2]所示。
 表2摄像头参数设置要求 
| 参数       | 要求                                                                     |
|:---|:---|
| **分辨率**  | 不低于720P，不高于4K（3840\*2160），建议1080P。                                     |
| **帧率**   | 不高于25fps，不低于15fps，建议值20fps。                                            |
| **码率**   | 720P建议设为4096Kbps\~6144Kbps左右，1080P建议设为6144Kpbs\~8192Kbps，更高分辨率可设置更高码率。 |
| **视频编码** | 如果支持H.265，设置为H.265。                                                    |
| **日夜切换** | 关闭夜间自动切换红外模式。                                                          |
| **宽动态**  | 关闭宽动态。普通摄像头的宽动态无法到达专业相机的效果，运动速度较快时存在运动模糊，应关闭宽动态设置。                     |
   
**摄像头架设要求**
- 镜头前方不要有遮挡的障碍物，容易挡住汽车，造成漏检。
- 不要将摄像头架在房子遮阴的挡板下，会造成光照过暗。
- 室外安装摄像头，需要注意雨雪的影响，避免在露天下布置，雨水或者雪将摄像头的镜头盖住，造成拍摄画面模糊不清。
- 摄像头俯视角度尽量保持在15°左右。
 
 #### 运行时配置参数
技能在运行时，需要[添加运行时配置](https://support.huaweicloud.com/usermanual-hilens/hilens_02_0011.html)。配置完成后，参数会从华为HiLens云侧下发到端侧设备。
- **配置参数说明**
  技能相关配置参数说明如[表3]所示。
   表3运行时配置参数说明 
  | 名称           | 是否必选 | 参数类型   | 说明                                                                                                                                                            |
  |:---|:---|:---|:---|
  | logLevel     | 是    | String | 日志级别，默认为"INFO"；如果设置较低级别，如"DEBUG"，可在日志中打印更多信息。                                                                                                                 |
  | keep_running | 是    | Int    | 当技能崩溃是否强制自动拉起技能并持续运行，HiLens Framework 1.1.0版本以上才会生效，升级操作请见[升级HiLens_Device_Agent固件版本](https://support.huaweicloud.com/usermanual-hilens/hilens_02_0015.html)。 |
  | multi_camera | 是    | List   | 一个设备上多路视频的技能参数，详情请参见[表4]。                                                                                                |
     
   表4视频参数说明 
  | 名称             | 是否必选 | 参数类型   | 说明                                                                                                                                                                                                                                                        |
  |:---|:---|:---|:---|
  | camera_names   | 是    | List   | 运行技能的IP摄像头名称，需要事先在摄像头管理中配置。可配置多个名称，表示多个摄像头采用同样的技能配置。                                                                                                                                                                                                      |
  | sendCarImgFlag | 否    | Int    | 是否发送检测到的汽车图，默认值为"0"。 - "0"：表示不发送  - "1"：表示发送   |
  | roi            | 否    | String | 检测区域配置。区域的设置由"Polygon"开头，其后依次为区域的坐标(按顺时针排列的x，y坐标)。默认值为"Polygon 0 0 0 0"，表示检测整个画面。                                                                                                                                                                         |
  | sendUrl        | 是    | String | 发送技能消息POST请求的URL地址。                                                                                                                                                                                                                                       |
     
  
- **示例**
  HiLens Kit设备支持多路摄像头接入，如果要为不同的摄像头设置不同的技能配置，或者几个摄像头共用同一技能配置，则可在配置列表中给出相应的配置信息，示例如下：
  ```
  //Store001的两个摄像头pos1和pos2配置不同参数：
  { 
    "logLevel": "INFO",
    "keep_running": 1,
    "multi_camera": 
           [{
            "camera_names": ["store001_pos1"],
            "sendCarImgFlag": 0,
            "roi": "Polygon 0 0 0 0",
            "sendUrl": "https://abc.company.com/car"
           },
           {
           "camera_names": ["store001_pos2"],
           "sendCarImgFlag": 1,
           "roi": "Polygon 0 0 0 0",
           "sendUrl": "https://abc.company.com/car"
            }]
  }
  //Store002的两个摄像头pos1和pos2配置相同参数：
  { 
    "logLevel": "INFO",
    "keep_running": 1,
    "multi_camera": 
           [{
           "camera_names": ["store002_pos1","store002_pos2"],
           "sendCarImgFlag": 0,
           "roi": "Polygon 0 0 0 0",
           "sendUrl": "https://abc.company.com/car"
           }]
  }
  ```
  
 
 #### 技能结果上传接口
- **请求消息**
  推理结果将以HTTPS POST请求方法推送到应用系统server的指定URL地址。
  POST {sendUrl}
  其中sendUrl在[技能运行时配置](https://support.huaweicloud.com/usermanual-hilens/hilens_02_0011.html)中设置。
  - 请求消息头 技能以json形式返回推理结果，因此消息头**Content-Type** 类型为"application/json"，参数说明如[表5]所示。
     表5请求消息头参数说明 
    | 名称           | 描述         | 是否必选 | 示例                |
    |:---|:---|:---|:---|
    | Content-Type | 消息体的类型（格式） | 是    | application/json。 |
       
    
  
  - 公共消息体 华为HiLens 公共消息体包含了技能的公共消息内容，如[表6]所示。
     表6公共消息体参数说明 
    | 名称        | 类型     | 说明                                                                        |
    |:---|:---|:---|
    | msg_type  | String | 技能类型，为car_recognition_result。                                             |
    | cam_name  | String | 摄像头名称。                                                                    |
    | skill_id  | String | 技能ID。                                                                     |
    | device_id | String | 设备ID，指代运行此技能的设备。如您的HiLens Kit的设备ID，可登录华为HiLens控制台，在"设备管理\>设备列表"页面的设备卡片查看。 |
       
    
  
  - 技能消息体 车型车标的json消息体如[表7]所示：
     表7技能消息体参数说明 
    | 名称       | 类型     | 说明               |
    |:---|:---|:---|
    | time     | Uint64 | 图片解码时间戳，单位为秒。    |
    | carType  | String | 汽车类型。            |
    | carBrand | String | 汽车品牌。            |
    | carUUID  | String | 抓拍到的汽车的UUID。     |
    | carImage | String | 汽车图片的BASE64编码结果。 |
       
    
  
  - 示例
    ```
    { 
      "msg_type": "car_recognition_result",
      "cam_name": "store001_pos1",
      "time": 1527603463,
      "carType": "MPV",
      "carBrand": "丰田_逸致",
      "carUUID": "0DD1BF0A-634B-11E8-8B0B-407D0FAD9218",
      "carImage": "4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQE..."
    }
    ```
    
    
- **响应消息**
  - 响应消息头 响应消息头由服务器端(应用系统)收到请求消息后返回。
    响应消息头可包含如下两部分。
    - 一个HTTP状态代码，从2xx成功代码到4xx或5xx错误代码。或者可以返回服务定义的状态码。
    
    - 附加响应头字段，如支持请求的响应所需，如"Content-type"响应消息头。
    
    
    详细的公共响应消息头参数说明如[表8]所示。
     表8公共响应消息头参数说明 
    | 名称             | 描述                                       | 示例                            |
    |:---|:---|:---|
    | Date           | HTTP协议标准报头。表示消息发送的时间，时间的描述格式由rfc822定义。   | Mon, 12 Nov 2007 15:55:01 GMT |
    | Server         | HTTP协议标准报头。包含了服务器用来处理请求的软件信息。            | Apache                        |
    | Content-Length | HTTP协议标准报头。用于指明实体正文的长度，以字节方式存储的十进制数字来表示。 | xxx                           |
    | Content-Type   | HTTP协议标准报头。用于指明发送给接收者的实体正文的媒体类型。         | application/json              |
       
    
  
  - 响应消息体（可选） 响应消息体通常以结构化格式（如json或xml）返回，与响应消息头中Content-type对应，传递除响应消息头之外的内容。
    
   
 
