如何使用flask在浏览器中显示来自cv2的图像?

时间:2017-09-01 18:08:03

标签: python opencv flask

我需要显示2个图像,一个是输入,另一个是opencv处理过的图像。在线搜索后,我找到了this。所以我运行一个简单的烧瓶编程 -

from flask import Flask, make_response, render_template, Response
app = Flask(__name__)

@app.route('/')
def simple():
    import cv2
    img = cv2.imread('fruit.jpg')
    ret, jpeg = cv2.imencode('.jpg', img)
    response = make_response(jpeg.tobytes())
    response.headers['Content-Type'] = 'image/png'
    return response
if __name__ == "__main__":
    app.run()

这很好。

为了显示两张图片,我按照上面发布的链接进行了操作。看起来像 -

from flask import Flask, make_response, render_template, Response
app = Flask(__name__)

@app.route('/gallery')
def get_gallery():
    import cv2
    im_names = []
    img = cv2.imread('fruit.jpg')
    im = cv2.imread('adapt.png')
    ret, jpeg = cv2.imencode('.jpg', img)
    ret1, jpeg1 = cv2.imencode('.png', im)
    print(im_names)
    im_names.append(jpeg.tobytes())
    im_names.append(jpeg1.tobytes())
    return render_template("gallery.html", image_names=im_names)

if __name__ == "__main__":
    app.run()

我从上面的链接中复制了gallery.html。我没有输出。它说内部服务器错误。我怎样才能解决这个问题呢?(我是烧瓶新手。)

1 个答案:

答案 0 :(得分:0)

首先创建一个名为“static”的文件夹。 将图像放在该文件夹中。 试试这个:

from flask import Flask, make_response, render_template, Response

app = Flask(__name__)
@app.route('/gallery')
def get_gallery():
    return "<img src='static/fruit.jpg'/> <img src='static/adapt.png'>"

if __name__ == "__main__":
    app.run()

请注意,您可以使用模板gallery.html,并将html代码直接放在模板中。