小扫车行驶过程中画面在浏览器中显示

大概的过程是如下这样:

首先,车辆行驶过程中,实时位置以及通过两个摄像头采集到的视频数据会传输到服务器端。然后,服务器端通过websocket协议与浏览器端进行通信,即在浏览器页面上显示状态。


小扫车行驶过程中画面在浏览器中显示

采用的技术:

一、使用Flask-Socketio进行websocket通信

Flask-Socketio是Socketio的Flask插件,常用API和Socket.io非常类似,基于异步处理各种事件,可以选择使用的异步服务有:eventlet、gevent和Flask自带的Werkzeug。

1.让服务器主动发送数据给客户端

不需要客户端请求,只需一次握手即可创建永久的连接,允许双向传输。

2.具体流程

  • 初始化:socketio = SocketIO(app)
  • 监听事件:socketio.on
  • 发送消息:发送消息使用send()或是emit(),对于未命名的事件使用send(),已经命名的事件用emit()。
  • Namespace:允许客户端与服务器通过同一个socket建立多个连接。如果不指定则使用默认namespce。
  • Room:如果一个事件指定了room,那么只有处在同一个room内的连接才能收到该事件。每一个连接都默认属于名为request.sid的房间。

二、绘制闪烁的小圆点

1.先将canvas的图像缓存到临时的canvas中

2.清除主canvas上的图像

3.在canvas上画新圆

4.新圆画完后,再把临时canvas图像绘制回主canvas中


小扫车行驶过程中画面在浏览器中显示

三、python socket编程(传输字符、文件、图片)

1.客户端

  • 创建 socket
  • 连接到远程服务器
  • 发送数据
  • 接收数据
  • 关闭 socket

2.服务器端

  • 打开 socket
  • 绑定到特定的地址以及端口上
  • 监听连接
  • 建立连接
  • 接收/发送数据

参考文献:

1.使用Flask-Socketio进行WebSocket通信

2.Flask–修改默认的static文件夹的方法

3.canvas动画—圆形扩散、运动轨迹

4.python socket编程(传输字符、文件、图片)

5.基于python和opencv的视频传输程序(一)

6.Video Streaming with Flask