python - 用烧瓶响应opencv(numpy)图像
问题描述
由于我听说过多次写入 SD 卡引起的问题,因此我想直接使用类似对象的文件在烧瓶应用程序(在树莓派上运行)上提供我的图像。在我的应用程序中,我每隔几秒处理一次图像,并且需要使用烧瓶在 Web 界面上显示它们。
我实际上正在尝试这样的事情:
@app.route('/image')
def image():
img = cv2.imread('raw.png')
img_str = cv.imencode('.png', img)[1].tostring()
f = io.BytesIO()
f.write(img_str)
f.seek(0)
#return Response(bytes, mimetype='image/jpeg')
return send_file(f, mimetype='image/png')
我的目标是每秒使用 ajax 从 Web 界面调用此函数几次,以更新图像。也许也可以使用长期民意调查来代替固定频率。现在我想提供图像而不将其写入 SD 卡。代码示例返回“图像无法显示,因为它包含错误..”
我是烧瓶的新手,也是 opencv 的新手,所以任何建议都会有所帮助。也让我知道是否有一种简单或更好的方法可以使用内置流对象、socketio 或其他方式来提供频繁更新的图像。
谢谢
解决方案
您应该尝试这种方式:
@app.route('/image')
def image():
img = cv2.imread('raw.png')
data = cv.imencode('.png', img)[1].tobytes()
return Response(b'--frame\r\n' b'Content-Type: image/jpeg\r\n\r\n' + data + b'\r\n\r\n', mimetype='multipart/x-mixed-replace; boundary=frame'
推荐阅读
- c - C中的自定义分配器
- python - 为什么写入 python 串行端口输出缓冲区被从输入缓冲区读取捕获
- database - 将团队建模为实体的最“自然方式”(ER 建模)
- php - 通过类名获取标签内容
- powershell - 在 powershell 中使用 new-guid 重命名每个文件
- python - 如何从网络摄像头图像中提取文本
- python - 创建一个未知大小的数据结构python
- javascript - 如何等待回调来解决 JS 中的承诺?同步 iOS WKWebView 和 JS
- java - 使用按长度排序的比较器对名称的 ArrayList 进行排序
- smalltalk - 可疑方法:如何使用重载方法将代码移植到(pharo)smallltalk