{"id":23072084,"url":"https://github.com/sanogotech/demoreconnaissanceemotionsia","last_synced_at":"2026-04-28T08:31:16.485Z","repository":{"id":252767557,"uuid":"841397185","full_name":"sanogotech/demoReconnaissanceEmotionsIA","owner":"sanogotech","description":"Reconnaissance des Émotions en Temps Réel avec Python","archived":false,"fork":false,"pushed_at":"2024-08-16T10:42:22.000Z","size":39,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-09T00:16:40.978Z","etag":null,"topics":["fer","opencv","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sanogotech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-12T10:24:06.000Z","updated_at":"2024-08-16T10:42:25.000Z","dependencies_parsed_at":"2024-08-12T11:47:11.414Z","dependency_job_id":"a6bf9823-add6-4ca3-bf33-21c34efffbb2","html_url":"https://github.com/sanogotech/demoReconnaissanceEmotionsIA","commit_stats":null,"previous_names":["sanogotech/demoreconnaissanceemotionsia"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanogotech%2FdemoReconnaissanceEmotionsIA","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanogotech%2FdemoReconnaissanceEmotionsIA/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanogotech%2FdemoReconnaissanceEmotionsIA/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanogotech%2FdemoReconnaissanceEmotionsIA/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sanogotech","download_url":"https://codeload.github.com/sanogotech/demoReconnaissanceEmotionsIA/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246989505,"owners_count":20865305,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fer","opencv","python"],"created_at":"2024-12-16T07:18:52.502Z","updated_at":"2026-04-28T08:31:16.151Z","avatar_url":"https://github.com/sanogotech.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# demoReconnaissanceEmotionsIA\n\n\n### **Titre : Reconnaissance des Émotions en Temps Réel avec Python, OpenCV et FER**\n\n---\n\n### **Introduction**\n\nLa reconnaissance des émotions en temps réel est une technologie innovante qui permet d'analyser les expressions faciales pour identifier les émotions ressenties par une personne. Cette technologie trouve des applications variées, notamment dans l'amélioration de l'expérience utilisateur, la sécurité, et le marketing. En combinant Python, OpenCV, et la bibliothèque FER (Facial Expression Recognition), il est possible de créer un système efficace capable de détecter et d'afficher les émotions en temps réel à partir d'une vidéo capturée par une webcam.\n\nDans ce projet, nous allons implémenter une solution complète de reconnaissance des émotions en temps réel, incluant la détection de visages multiples, le suivi des émotions et la visualisation des données collectées.\n\n---\n\n### **Mini Backlog du Projet**\n\n**Objectifs :**\n\n1. **Configurer l'environnement de développement** : Installation des bibliothèques Python nécessaires (OpenCV, FER).\n2. **Développer un système de capture vidéo** : Utiliser OpenCV pour accéder à la webcam et capturer des images en temps réel.\n3. **Implémenter la détection des émotions** : Utiliser la bibliothèque FER pour analyser les expressions faciales et identifier les émotions.\n4. **Gérer plusieurs visages** : Assurer que le système peut détecter et analyser les émotions de plusieurs visages simultanément.\n5. **Afficher les émotions en temps réel** : Superposer les émotions détectées sur le flux vidéo en direct.\n6. **Enregistrer et analyser les données émotionnelles** : Stocker les émotions détectées pour une analyse ultérieure, avec la possibilité de visualiser les tendances au fil du temps.\n7. **Optimisation et débogage** : S'assurer que le système fonctionne de manière fluide et précise, avec un temps de réponse minimal.\n\n---\n\n### **1. Mise en Place de l'Environnement**\n\nAssurez-vous que Python est installé sur votre système et installez les bibliothèques requises :\n\n```bash\npip install opencv-python\npip install fer\npip install matplotlib  # Pour la visualisation des résultats\n```\n\nPour assurer que toutes les dépendances nécessaires à votre projet de reconnaissance des émotions en temps réel avec Python, OpenCV, et FER sont installées, voici un exemple de contenu pour un fichier `requirements.txt` :\n\n```plaintext\nopencv-python==4.8.0.74\nfer==22.4.0\nmatplotlib==3.7.2\ntensorflow==2.13.0\nmtcnn==0.1.1\nnumpy==1.25.0\n```\n\n### **Explication des Packages :**\n\n1. **`opencv-python`** : Bibliothèque principale pour le traitement d'images et l'accès à la webcam.\n2. **`fer`** : Bibliothèque utilisée pour la reconnaissance des émotions à partir des expressions faciales.\n3. **`matplotlib`** : Utilisée pour la visualisation des résultats sous forme de graphiques.\n4. **`tensorflow`** : Nécessaire pour le backend de certaines opérations, notamment pour la détection de visages dans `fer`.\n5. **`mtcnn`** : Utilisé par `fer` pour une détection précise des visages.\n6. **`numpy`** : Pour les opérations mathématiques et de manipulation de matrices, très utile dans le traitement d'images.\n\n### **Installation des Dépendances :**\n\nVous pouvez installer toutes ces dépendances en utilisant la commande suivante dans le terminal, une fois que vous avez créé votre fichier `requirements.txt` :\n\n```bash\npip install -r requirements.txt\n```\n\nCela garantit que toutes les bibliothèques requises sont installées avec les versions correctes pour exécuter votre projet sans problèmes de compatibilité.\n### **2. Importer les Bibliothèques Nécessaires**\n\n```python\nimport cv2\nfrom fer import FER\nimport time\nimport numpy as np\nimport matplotlib.pyplot as plt\n```\n\n### **3. Accéder à la Webcam**\n\n```python\ncap = cv2.VideoCapture(0)\n```\n\n### **4. Initialiser le Détecteur FER**\n\n```python\nemotion_detector = FER(mtcnn=True)  # MTCNN pour une meilleure précision\n```\n\n### **5. Reconnaissance des Émotions en Temps Réel avec Visages Multiples et Journalisation**\n\n```python\n# Stocker les émotions détectées\nemotion_log = []\n\ntry:\n    while True:\n        ret, frame = cap.read()\n\n        if not ret:\n            print(\"Échec de la capture de la trame\")\n            break\n\n        # Détecter les émotions sur la trame actuelle\n        emotion_data = emotion_detector.detect_emotions(frame)\n\n        for face in emotion_data:\n            bounding_box = face[\"box\"]\n            emotions = face[\"emotions\"]\n\n            # Obtenir l'émotion dominante\n            dominant_emotion, score = max(emotions.items(), key=lambda item: item[1])\n\n            # Dessiner un rectangle autour du visage\n            x, y, w, h = bounding_box\n            cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 0, 0), 2)\n\n            # Afficher le texte avec l'émotion dominante\n            text = f\"{dominant_emotion} ({score:.2f})\"\n            cv2.putText(frame, text, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (255, 255, 255), 2)\n\n            # Enregistrer les émotions détectées\n            emotion_log.append(emotions)\n\n        # Afficher la trame avec les émotions détectées\n        cv2.imshow('Reconnaissance des Émotions en Temps Réel', frame)\n\n        # Appuyez sur 'q' pour quitter\n        if cv2.waitKey(1) \u0026 0xFF == ord('q'):\n            break\n\nfinally:\n    # Libérer la webcam et fermer la fenêtre\n    cap.release()\n    cv2.destroyAllWindows()\n\n    # Optionnel : Visualiser les émotions enregistrées au fil du temps\n    if emotion_log:\n        # Agréger les émotions sur toutes les trames\n        aggregated_emotions = {emotion: 0 for emotion in emotion_log[0].keys()}\n        for log in emotion_log:\n            for emotion, score in log.items():\n                aggregated_emotions[emotion] += score\n        \n        # Visualisation\n        emotions, scores = zip(*aggregated_emotions.items())\n        plt.figure(figsize=(10, 6))\n        plt.bar(emotions, scores, color='skyblue')\n        plt.title('Scores Émotionnels Agrégés au Fil du Temps')\n        plt.show()\n```\n\n### **6. Explications des Améliorations**\n\n- **Gestion des Visages Multiples :** Le code détecte et traite plusieurs visages dans chaque trame. Chaque visage est analysé pour les émotions, et l'émotion dominante est affichée.\n  \n- **Journalisation des Émotions :** Les émotions détectées dans chaque trame sont enregistrées dans une liste (`emotion_log`). Ces données peuvent être utilisées ultérieurement pour une analyse, comme la visualisation des tendances émotionnelles au fil du temps.\n\n- **Affichage Optimisé :** Le programme dessine efficacement des rectangles autour des visages et superpose le texte pour afficher l'émotion dominante détectée pour chaque visage.\n\n- **Gestion des Erreurs :** Le code vérifie si une trame est capturée avec succès. Si ce n'est pas le cas, il se ferme proprement avec un message d'erreur.\n\n- **Visualisation Optionnelle :** Après la fin du flux vidéo, les émotions agrégées au fil du temps peuvent être visualisées sous forme de graphique à barres pour montrer la prévalence de chaque émotion pendant la session.\n\n### **Conclusion**\n\nCe projet offre une solution complète de reconnaissance des émotions en temps réel, avec des fonctionnalités avancées comme la gestion des visages multiples, la journalisation des émotions, et la visualisation des tendances. Il peut être utilisé dans diverses applications allant de l'amélioration de l'expérience client à la surveillance et à l'analyse comportementale.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsanogotech%2Fdemoreconnaissanceemotionsia","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsanogotech%2Fdemoreconnaissanceemotionsia","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsanogotech%2Fdemoreconnaissanceemotionsia/lists"}