2017-09-01 1 views
0

2つのイメージを表示する必要があります.1つは入力し、もう1つは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() 

これはうまくいきました。

2つの画像を表示するために、私は上に投稿したリンクに従った。私は上記のリンクからgallery.htmlをコピーした

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() 

- それは次のようになります。私は出力がありません。それは内部サーバーのエラーを示します。どのようにしてこの問題を解決できますか?(私はフラスコに初めてです)。

+0

あなたが書き込んだ最初のルートにリンクするページを、各イメージごとに作成します。 – davidism

答えて

0

最初に "static"という名前のフォルダを作成します。 あなたのイメージをそのフォルダに入れてください。 そして、これを試してください:あなたのテンプレートgallery.htmlを使用して、テンプレートに直接HTMLコードを置くことができ

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() 

注意を。

+0

指定されたパスを使用して表示したように、ブラウザで画像 'jpeg.tobytes()'をhtmlで表示できますか?静的なフォルダに画像を保存して表示したくない。あなたはまた、上記に関連するブログやチュートリアルに私を導くことができます。 –

+0

イメージは既に保存されていますが、サンプルコードのファイル名からイメージを読み込みます。 – davidism

+0

cv2.imwrite( 'static/cv2_image.png'、img) イメージを提供する前にディスクにイメージを保存する必要があります。 –

関連する問題