NeuroSphere / app.py
Uddancode's picture
Update app.py
51d6f5f verified
Raw
History Blame Contribute Delete
1.87 kB
import streamlit as st
import cv2
from deepface import DeepFace
import numpy as np
# Streamlit app title
st.title("Face Emotion Detection App")
# Upload an image or video
uploaded_file = st.file_uploader("Upload an image or video", type=["jpg", "jpeg", "png", "mp4"])
# Product suggestions based on emotions
emotion_to_product = {
"happy": "Product A - Happiness Booster",
"sad": "Product B - Comfort Blanket",
"angry": "Product C - Stress Relief Ball",
"surprise": "Product D - Mystery Box",
"fear": "Product E - Confidence Potion",
"disgust": "Product F - Aroma Diffuser",
"neutral": "Product G - Everyday Essentials",
"Unknown": "Product H - General Item"
}
if uploaded_file is not None:
# If the uploaded file is an image
if uploaded_file.type in ["image/jpeg", "image/png"]:
image = np.array(bytearray(uploaded_file.read()), dtype=np.uint8)
image = cv2.imdecode(image, cv2.IMREAD_COLOR)
# Convert frame to RGB for DeepFace
rgb_frame = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# Analyze emotions using DeepFace
result = DeepFace.analyze(rgb_frame, actions=['emotion'], enforce_detection=False)
emotion = result[0]['dominant_emotion'] # Extract dominant emotion
# Display the uploaded image
st.image(rgb_frame, channels="RGB")
# Display the detected emotion
st.subheader(f"Detected Emotion: {emotion}")
# Display the suggested product
product = emotion_to_product.get(emotion, "Product H - General Item")
st.subheader(f"Recommended Product: {product}")
# If the uploaded file is a video
elif uploaded_file.type == "video/mp4":
st.video(uploaded_file)
# You can add code to analyze frames from the video if needed
else:
st.info("Please upload an image or video file.")