2017-09-01 76 views
0

我需要顯示2個圖像,一個是輸入,另一個是opencv處理的圖像。在線搜索後,我找到了this。所以我運行一個簡單的燒瓶編 -如何使用燒瓶在瀏覽器中顯示來自cv2的圖像?

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。我沒有輸出。它說內部服務器錯誤。我該如何解決這個問題?(我是燒瓶新手)。

+0

您可以爲每個圖像編寫一個鏈接到您寫的第一條路線的頁面。 – davidism

回答

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代碼模板。

+0

您是否可以使用html在瀏覽器中顯示圖像'jpeg.tobytes()',就像使用指定的路徑顯示的一樣?我不想將圖像保存到靜態文件夾,然後顯示它。你也可以引導我到一些與上述相關的博客或教程。 –

+0

但是圖像已經保存,您可以在示例代碼中的文件名中讀取它。 – davidism

+0

cv2.imwrite('static/cv2_image.png',img) 您需要先將圖像保存在磁盤上,然後才能使用。 –

相關問題