1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
import cv2 import numpy as np import requests import os # Agregar esta línea from keras.models import model_from_json # Función para descargar el modelo FER si no está presente def download_model_if_not_exists(model_url, model_path): if not os.path.exists(model_path): print("Descargando...") response = requests.get(model_url) with open(model_path, 'wb') as f: f.write(response.content) print("Modelo descargado exitosamente.") # URL del modelo preentrenado FER model_url = 'https://github.com/jesusninoc/Realtime-Emotion-Detection/raw/master/fer.h5' # Ruta donde se guardará el modelo descargado model_path = '/content/fer.h5' # Descargar fichero json del modelo FER model_json = 'https://github.com/jesusninoc/Realtime-Emotion-Detection/raw/master/fer.json' model_json_path = '/content/fer.json' # Descargar el modelo FER si no está presente download_model_if_not_exists(model_url, model_path) download_model_if_not_exists(model_json, model_json_path) #load model model = model_from_json(open("fer.json", "r").read()) #load weights model.load_weights('fer.h5') # Función para preprocesar la imagen def preprocess_image(image): # Redimensionar la imagen a 48x48 y convertirla a escala de grises img = cv2.resize(image, (48, 48)) img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # Normalizar la imagen img = img / 255.0 # Expandir dimensiones para que coincida con el formato de entrada del modelo (batch_size, height, width, channels) img = np.expand_dims(img, axis=-1) img = np.expand_dims(img, axis=0) return img # Función para realizar el reconocimiento de emociones en una imagen def recognize_emotions(image): # Preprocesar la imagen processed_image = preprocess_image(image) # Realizar la predicción utilizando el modelo preentrenado predictions = model.predict(processed_image) # Obtener la emoción con mayor probabilidad emotion_label = ['Angry', 'Disgust', 'Fear', 'Happy', 'Sad', 'Surprise', 'Neutral'] max_index = np.argmax(predictions[0]) emotion = emotion_label[max_index] return emotion # Cargar la imagen desde el archivo image_path = '/content/imagen.png' # Reemplazar con la ruta de tu imagen image = cv2.imread(image_path) # Realizar el reconocimiento de emociones en la imagen emotion = recognize_emotions(image) # Mostrar la emoción detectada print("Emoción detectada en la imagen:", emotion) |