开放能力
开发平台
行业应用
生态合作
开发与教学
资讯 社区 控制台
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术
AR与VR
数据智能
场景方案
部署方案
行业应用
智能教育
智能医疗
智能零售
智能工业
企业服务
智能政务
信息服务
智能园区

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模型推理服务接口