Spaces:
Sleeping
Sleeping
| from flask import Flask, render_template, request, jsonify | |
| from deepface import DeepFace | |
| import tempfile | |
| import os | |
| app = Flask(__name__, template_folder="templates", static_folder="static") | |
| # preload emotion model once | |
| models_cache = { | |
| "emotion": DeepFace.build_model("Emotion") | |
| } | |
| def index(): | |
| return render_template("index.html") | |
| def detect_live(): | |
| if "frame" not in request.files: | |
| return jsonify({"error": "no frame uploaded"}), 400 | |
| file = request.files["frame"] | |
| tmp = tempfile.NamedTemporaryFile(delete=False) | |
| file.save(tmp.name) | |
| try: | |
| result = DeepFace.analyze( | |
| img_path=tmp.name, | |
| actions=["emotion"], | |
| models=models_cache, | |
| detector_backend="mediapipe", | |
| enforce_detection=False | |
| ) | |
| except Exception as e: | |
| os.remove(tmp.name) | |
| return jsonify({"error": str(e)}), 500 | |
| os.remove(tmp.name) | |
| dominant = result[0]["dominant_emotion"] | |
| scores = result[0]["emotion"] | |
| return jsonify({ | |
| "emotion": dominant, | |
| "scores": scores | |
| }) | |
| if __name__ == "__main__": | |
| app.run(host="0.0.0.0", port=7860) | |