行为 API 指南#

视觉行为由所有物体随时间的轨迹以及相关的元数据属性(如距离、速度等)组成。

行为 API 端点#

分析 Web API 通过 Ingress 控制器公开。

URL 前缀是 http://<INGRESS-HOST-IP>:<INGRESS-PORT>/emdx/

将 INGRESS-HOST-IP 替换为 Jetson 设备 IP。将 INGRESS-PORT 替换为 30080 或 Ingress 配置中定义的最后一个值。

注意

URL 前缀路径在未来版本中可能会更改。

行为 API 版本 v2#

行为 API 有一个新的主版本 v2,它与早期版本不向后兼容。此版本仍然支持 JPS 1.0 版本附带的先前版本。但是,强烈建议采用/迁移到 v2 版本。v2 版本在路径 /api/v2 下提供。早期版本仍然在 /api 下可用。

检索特定时间范围内的所有行为#

获取给定传感器在给定时间段内的行为

HTTP GET

/api/v2/behavior?sensorId=Amcrest_3&fromTimestamp=2020-10-30T20:00:00.000Z&toTimestamp=2020-10-31T01:00:00.000Z

必需的查询参数#

sensorId

description: 要返回元数据的传感器。

type: 字符串

example: sensorId=Amcrest_3

fromTimestamp

description: 需要返回元数据的起始时间戳下限。

type: UTC / GMT 时间戳字符串

example: 2020-10-30T20:00:00.000Z

toTimestamp

description: 需要返回元数据的结束时间戳上限。

type: UTC / GMT 时间戳字符串

example: 2020-10-30T20:05:00.000Z

可选参数#

objectType

description: 一个可选的 objectTypes 参数,用于按对象类型进行过滤(例如,人、汽车...)

type: 字符串

按对象类型过滤的可能方法如下

1) 除了所有对象类型的累积计数外,仅返回特定对象类型的计数。objectType=person,car

2) 除了所有对象类型的累积计数外,返回所有对象类型的计数。objectType=*

  1. 当未指定 objectTypes 时,它仅返回所有对象类型的累积计数。

响应#

HTTP GET

{
    "behavior": [
        {
            "sensor": {
                "id": "RedJD8H265"
            },
            "object": {
                "id": "134",
                "type": "person"
            },
            "locations": {
                "coordinates": [
                    [
                        1708598580297,
                        [
                            291,
                            594
                        ]
                    ],
                    [
                        1708598580364,
                        [
                            285,
                            594
                        ]
                    ],
                    [
                        1708598580474,
                        [
                            385,
                            694
                        ]
                    ],
                    [
                        1708598580372,
                        [
                            281,
                            595
                        ]
                    ]               ],
                "type": "linestring"
            },
            "length": 4,
            "endLocations": {
                "start": [
                    1708598580297,
                    [
                        291,
                        594
                    ]
                ],
                "end": [
                    1708598580372,
                    [
                        281,
                        595
                    ]
                ]
            },
            "start": "2024-02-22T10:43:00.297Z",
            "end": "2024-02-22T10:43:01.255Z",
            "distance": 204.81118737109063,
            "speed": 213.7903834771301,
            "timeInterval": 0.958
            "partial": true,
            "bearing": 175.4933931162317,
            "direction": "Left"
        }
    ]
}

响应主体#

sensor.id

传感器的唯一 ID。

object.id

对象的唯一 ID。

locations.coordinates

例如
[
    1708598580364,
    [
        285,
        594
    ]
]

轨迹项的数组,其中每个项是包含两个元素的数组。

第一个元素是时间戳,例如,1708598580364。

第二个元素是坐标数组 [x,y],例如 [285,594],其中 x=285,y=594。

length

locations.coordinates 数组中轨迹项的数量。

start

第一个轨迹项的时间戳。

end

最后一个轨迹项的时间戳。

endLocations.start

第一个轨迹项。这对应于 location.coordinates 数组中的第一个条目。

endLocations.end

最后一个轨迹项。这对应于 location.coordinates 数组中的最后一个条目。

distance

对象覆盖的总距离,即每个轨迹段长度的总和。距离单位是像素。由于目前不支持相机校准,因此一切都在相机坐标系中,单位是像素。

speed

对象的平均速度。每秒行进的距离(像素为单位)。

partial

指示轨迹项表示此对象的完整轨迹。如果轨迹项未完全落在请求的 fromTimestamp 和 toTimestamp 范围内,则 partial 将为 false。

错误响应#

响应主体:请参阅页面末尾的错误响应主体定义。

HTTP 状态代码

422:未找到请求的 sensorId 和时间范围的行为 500:内部服务器错误

错误响应主体#

所有 API 的错误响应都是具有以下属性的 JSON 对象。

{
   "error": "#Detailed error string"
}