from flask import Flask, request, jsonify import time # import ktrain # import gradio as gr from fer import FER import cv2 import gradio as gr import json import requests import numpy as np emotion_detector = FER(mtcnn=True) def predict_image(url): # Convert Gradio image format (BGR) to RGB response = requests.get(url) img_array = np.frombuffer(response.content, np.uint8) img = cv2.imdecode(img_array, cv2.IMREAD_COLOR) img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) analysis = emotion_detector.detect_emotions(img) start_time = time.time() res = [] for data in analysis: emotions = data['emotions'] max_emotion = max(emotions, key=emotions.get) max_value = emotions[max_emotion] res.append({max_emotion: max_value}) response = { 'analysis': analysis, 'best_predict': list(res), } return response gr.Interface(fn=predict_image, inputs="textbox", outputs="json").launch() # def predict_list(): # data = request.json # messages = data.get('messages', []) # start_time = time.time() # predictions = predictor.predict(messages) # response = { # 'messages': messages, # 'predictions': predictions, # 'elapsed_time': time.time() - start_time # } # return jsonify(response) # if __name__ == "__main__": # app.run(host="0.0.0.0", port=7860)