资讯 社区 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

HTTP结果回调

说明

当用户需要获取EdgeBoard的分析结果时,EdgeBoard开发管理平台支持将视频流任务结果通过HTTP协议推送到指定地址,方便客户进行二次开发。

HTTP回调方式:EdgeBoard ----- post -----> 用户服务器

​ EdgeBoard <------ response---- 用户服务器

HTTP回调接口:http://ip:port/xxxxxxx 。该接口由用户定义,不做固定格式要求。

回调功能设置

添加任务时,可设置回调功能

回调状态:勾选【启用】会开启回调功能;勾选【禁用】会关掉回调功能;

回调地址:用户实际回调服务地址(图中地址仅作展示),开启回调后,设备会将结果数据发送至该地址;

回调条件:回调结果支持基于模型标签(label)进行条件筛选,增加回调条件后,服务器就会得到筛选后的数据;

回调图片:回调图片仅指回调参数中“background”的返回值,【原图】指返回的background为不带渲染的base64图片,【原图+渲染】指返回的background为不带渲染的base64图片,【无图片】则回调结果中不返回background参数。由于回调中返回图片会占用大量的资源和带宽,实际使用时推荐选择【无图片】选项。

HTTP回调协议

HTTP请求方法:post

URI:客户自定义

Request:

Post request(content-type: application/json; charset=UTF-8):

Response 返回:

Http Status 200 (ok)

数据返回格式

{
  "task_id":0, //任务ID号
  "task_type":"eb::vehicle_tracking", //任务类型
  "camera_id":0, //摄像头ID号
  "camera_name":"rtsp_camera", //摄像头名称
  "camera_sn":"xafasfajfasdfas", //摄像头SN码
  "model_id":0, //模型ID号
  "background":"base64xxxxxxxxxxxx",//背景图片,勾选页面中【回调图片】和【是否渲染】,会返回该字段
  "height":1920, //回调图片的高
  "width":1080, //回调图片的宽
  "time":"1637218917000", //回调图片时间戳
  "result_data":[ //推理结果
    {
      "track_id":0,//跟踪的模型支持该字段
      "image_data":xxxxx,
      "label_id":0,
      "label_name":"fire",
      "score":0.83354",
       "x0":0.1, //左上角、右下角坐标
       "y0":0.1,
       "x1":0.2,
       "y1":0.2
    },
    .... 
  ],
  "fence_data":[//画面框定信息
    {
      "id":0,
      "name":"停车位1",
      "coordinates":[
        [0.1,0.1],
        [0.2,0.2],
        [0.3,0.3]
      ]
    },
    {
      "id":1,
      "name":"停车位2",
      "coordinates":[
        [0.1,0.1],
        [0.2,0.2],
        [0.3,0.3],
        [0.4,0.4]
      ]
    }
  ]
}

HTTP回调接口搭建示例

import base64
import tornado.ioloop
import tornado.web
import json
import time

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

    def post(self):
        post_data = self.request.body.decode('utf-8')
        json_data = json.loads(post_data)
        #print(json_data)
        self.set_status(200)

        print (json.dumps(json_data, ensure_ascii=False, indent=4))
        self.finish()

def make_app():
    return tornado.web.Application([
        (r"/httpcallback", MainHandler),
    ])

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()
上一篇
系统设置
下一篇
HTTP模型推理服务接口