Мне нужно передать загруженное изображение на flask. Страница html загружает изображение, но я не могу передать это изображение как запрос на flask. Я использовал его для предсказания изображения, но изображение не может быть получено.
вот мой flask код
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>
Все, что мне нужно для идентификации этого изображения, но я могу передать это изображение как запрос. Пожалуйста, помогите в этом.