用烧瓶响应opencv(numpy)图像

时间:2018-05-07 12:24:41

标签: python image opencv flask video-streaming

由于我多次听到因写入SD卡而引起的问题,我想直接使用像对象这样的文件在烧瓶应用程序(在raspberry pi上运行)上提供我的图像。在我的应用程序中,我每隔几秒钟处理一次图像,需要使用烧瓶在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等来经常更新图像。

由于

1 个答案:

答案 0 :(得分:0)

您应该尝试这种方式:

@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'