簡體   English   中英

如何將我從 html 頁面上傳到燒瓶的圖像傳遞?

[英]How to pass image i uploaded to flask from html page?

我需要將我上傳的圖像傳遞給 flask 。 html 頁面上傳圖像,但我無法將該圖像作為請求傳輸到燒瓶。 我使用它進行圖像預測,但無法獲取圖像。

這是我的燒瓶代碼

import numpy as np
from flask import Flask, request, jsonify, render_template
import numpy
from PIL import Image
from keras.models import load_model
app = Flask(__name__)

model = load_model('traffic_classifier.h5')
classes = { 1:'Speed limit (20km/h)',
            2:'Speed limit (30km/h)',      
            3:'Speed limit (50km/h)',       
            4:'Speed limit (60km/h)',      
            5:'Speed limit (70km/h)',    
            6:'Speed limit (80km/h)',      
            7:'End of speed limit (80km/h)',     
            8:'Speed limit (100km/h)',    
            9:'Speed limit (120km/h)',     
           10:'No passing',   
           11:'No passing veh over 3.5 tons',     
           12:'Right-of-way at intersection',     
           13:'Priority road',    
           14:'Yield',     
           15:'Stop',       
           16:'No vehicles',       
           17:'Veh > 3.5 tons prohibited',       
           18:'No entry',       
           19:'General caution',     
           20:'Dangerous curve left',      
           21:'Dangerous curve right',   
           22:'Double curve',      
           23:'Bumpy road',     
           24:'Slippery road',       
           25:'Road narrows on the right',  
           26:'Road work',    
           27:'Traffic signals',      
           28:'Pedestrians',     
           29:'Children crossing',     
           30:'Bicycles crossing',       
           31:'Beware of ice/snow',
           32:'Wild animals crossing',      
           33:'End speed + passing limits',      
           34:'Turn right ahead',     
           35:'Turn left ahead',       
           36:'Ahead only',      
           37:'Go straight or right',      
           38:'Go straight or left',      
           39:'Keep right',     
           40:'Keep left',      
           41:'Roundabout mandatory',     
           42:'End of no passing',      
           43:'End no passing veh > 3.5 tons' }
@app.route('/')
def index():
    # Main page
    return render_template('index.html')

@app.route('/traffic')
def traffic():
    # Main page
    return render_template('traffic.html')

@app.route('/sleep')
def sleep():
    # Main page
    return render_template('sleep.html')

@app.route('/predict',methods=['POST'])
def predict():
    '''
    For rendering results on HTML GUI
    '''


    if request. method == "POST":
        image=request. form["fileupload"]



    image = Image.open('D:/main_project/Traffic/Test/00006.png')
    image = image.resize((30,30))
    image = numpy.expand_dims(image, axis=0)
    image = numpy.array(image)






    pred = model.predict_classes([image])[0]
    sign = classes[pred+1]



    return render_template('traffic.html', prediction_text='This sign represents {}'.format(sign))

@app.route('/predict_api',methods=['POST'])
def predict_api():
    '''
    For direct API calls trought request
    '''
    data = request.get_json(force=True)
    prediction = model.predict([np.array(list(data.values()))])

    output = prediction[0]
    return jsonify(output)

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

這是我的 html 代碼

<!DOCTYPE html>
<html lang="en-US" class="no-js no-svg">


<br />
<h2>Upload Traffic Signs</h2>
<br />
<br />
<br />
<form action="{{ url_for('predict')}}"method="post">
<input id="fileupload" name="fileupload"   type="file" />
<b></b>
<br />
<br />
<div width="250px" height="300px" id="dvPreview">
</div>
<br />
<br />
<div id="txt" >

</div>
<button type="submit"  class="button button4">Classify Sign</button>
      </form>
<br />
 {{ prediction_text }}
<br />
<br />
<br />

    <!-- images uploader ends-->


</html>

我只需要 id 來預測該圖像,但無法根據請求傳輸該圖像。 請在這方面提供幫助。

<form method="post" action="{{ url_for('') }}" enctype="multipart/form-data">

def upload_image():
    try:
        if request.method == 'POST':
            ALLOWED_EXTENSIONS = [".png", ".jpg", ".jpeg", ".gif"]

            file = request.files['image']
            if file and any(split_filename(file.filename)[1] == s for s in ALLOWED_EXTENSIONS):
                folder = app.config['UPLOAD_FOLDER']
                pathName = app.config['IMAGE_PATH'] + datetime.utcnow().strftime(
                    '%Y\\%m\\')
                if not os.path.exists(os.path.join(folder + pathName)):
                    os.makedirs(folder + pathName)
                filename = str(uuid.uuid4()) + split_filename(file.filename)[1]
                file.save(os.path.join(folder + pathName, filename))
                path = pathlib.PureWindowsPath(pathName + filename).as_posix()
                return url_for('main.get_file', path=path, _external=True)
            else:
                return 'Please Choose PNG, JPG, JPEG, GIF Image, Not ' +  split_filename(file.filename)[1], 404
    except Exception as error:
        return error.__str__()

@mn.route('/file/<path:path>', methods=['GET'])
def get_file(path):
    try:
        return send_file(os.path.join(app.config['UPLOAD_FOLDER'], path))
    except :
        return send_file(os.path.join(app.config['UPLOAD_FOLDER'], '404.png'))

這是我的代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM