|
|
from flask import Flask, request, jsonify
|
|
|
import tensorflow as tf
|
|
|
import numpy as np
|
|
|
import cv2
|
|
|
import base64
|
|
|
|
|
|
app = Flask(__name__)
|
|
|
|
|
|
|
|
|
model = tf.keras.models.load_model("model.h5")
|
|
|
|
|
|
|
|
|
def decode_image(image_data):
|
|
|
image_bytes = base64.b64decode(image_data)
|
|
|
image_np = np.frombuffer(image_bytes, dtype=np.uint8)
|
|
|
image = cv2.imdecode(image_np, cv2.IMREAD_COLOR)
|
|
|
image = cv2.resize(image, (224, 224))
|
|
|
image = image / 255.0
|
|
|
return image.reshape(1, 224, 224, 3)
|
|
|
|
|
|
|
|
|
@app.route('/predict', methods=['POST'])
|
|
|
def predict():
|
|
|
try:
|
|
|
data = request.json['image']
|
|
|
image = decode_image(data)
|
|
|
prediction = model.predict(image).tolist()
|
|
|
return jsonify({'prediction': prediction})
|
|
|
except Exception as e:
|
|
|
return jsonify({'error': str(e)})
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
app.run(debug=True)
|
|
|
|