Ce projet est une application de gestion de présences par reconnaissance faciale, destinée à un établissement scolaire (ex : Lycée Melkior Garré). Il permet d’ajouter des étudiants, d’associer des images de visages, de reconnaître automatiquement les élèves présents via la webcam, et d’exporter les présences.
Présentation
Architecture générale
- main.py : Point d’entrée de l’application. Initialise la base de données, le processeur d’images, la base de visages et l’interface graphique.
- database/connection.py : Gestion de la connexion à la base de données (SQLite locale ou MySQL distante), création des tables, exécution des requêtes.
- ui/ui_manager.py : Interface graphique principale (Tkinter), navigation, formulaires, affichage des présences, interactions utilisateur.
- src/face_recognition.py : Module de reconnaissance faciale, gestion de la caméra, détection et comparaison des visages.
- styles.py : Définition des styles graphiques modernes pour l’interface (couleurs, polices, widgets).
- requirements.txt : Liste des dépendances Python nécessaires.
Fonctionnalités principales
1. Gestion des étudiants
- Ajout d’un nouvel élève avec ses informations (nom, prénom, classe, année scolaire).
- Possibilité d’ajouter plusieurs images de visage pour un même élève.
2. Reconnaissance faciale
- Activation de la caméra pour détecter et reconnaître les visages présents.
- Marquage automatique de la présence dans la base de données si un visage est reconnu avec un taux de confiance suffisant.
3. Gestion des présences
- Affichage en temps réel de la liste des élèves présents, absents ou en retard.
- Vérification automatique des absences et insertion dans la base si un élève n’est pas reconnu.
4. Export des données
- Export des présences du jour au format CSV pour exploitation externe.
Structure de la base de données
- Classe : id, nom_classe, niveau
- Etudiants : id, prenom, nom_famille, id_classe, annee_scolaire, photo_path
- FaceFeatures : id, etudiant_id, image_path, face_encoding, date_creation
- Presences : id, etudiant_id, date_presence, heure_presence, heure_fin, periode, statut
Technologies utilisées
- Python 3
- Tkinter : Interface graphique
- OpenCV, Pillow, Numpy : Traitement d’images et reconnaissance faciale
- MySQL / SQLite : Stockage des données
- PyInstaller (optionnel) : Création d’exécutables
Lancement de l’application
- Installer les dépendances :
pip install -r requirements.txt
- Lancer le fichier principal :
python main.py
- Choisir la base de données (locale ou MySQL) lors du démarrage.
Personnalisation & Extensions
- Les styles graphiques peuvent être modifiés dans
styles.py. - Les modèles de reconnaissance faciale peuvent être améliorés dans
src/face_recognition.py. - La structure de la base de données peut être adaptée selon les besoins dans
database/connection.py.