Rong : Détection de mouvement via webcam et intel OpenCV

RONG c'est quoi?
Un programme de détection de mouvement par webcam.

D'ou vient ce nom, RONG?
C'est le nom d'une étudiante japonaise en Master 2e année qui voulait réaliser un projet similaire, mais bloquait sur l' algorithme à employer. L'idée m'a plue mais pas son code, c'est pourquoi j'ai développé le mien dans mon coin.

Quelle est sa particularité?
Sa flexibilité. En terme de détection il n'y a pas de solution universelle mais seulement du sur-mesure car toute configuration dépend du contexte: les paramètres ne sont pas les mêmes pour identifier des avions, des oiseaux, une personne dans un couloir, une personne dans un grand jardin, un oeil qui se ferme, ou un animal qui marche. La taille, la vitesse, la luminiosité, le type de caméra, son angle de vue, et surtout le but de l' application sont des paramètres à prendre en compte.

Aussi, les besoins changent selon les utilisateurs: en cas d'alerte l'un voudra simplement marquer le spot sur l' écran, alors qu'un autre préfèrera logguer l' évènement dans un fichier texte; un autre encore voudra se voir notifier l' évènement par email/SMS, pour voir les images depuis un navigateur web en temps réel ou en différé. Un autre voudra simplement enregistrer la vidéo, uniquement en cas de mouvement. Mieux: Rong est également capable de faire de la synthèse vocale, il peut prévenir à la voix en cas d'alerte. D'ou la gestion des paramètres de configuration, aussi simples à organiser que la config d'un serveur web Apache.

INSTALLATION

  1. Télécharger Rong (Sources, binaires console et GTK) [archive 7Z 3349Ko]
  2. Installer les drivers de la caméra (Linux/Windows/...)
  3. brancher la caméra
  4. Editer rong.conf
  5. Lancer rong

CONFIGURATION


Rong organise les variables de configuration en trois grandes classes: Voir le fichier de configuration pour les détails qui sont en commentaires.
Quand la config est jugée satisfaisante, le fichier de configuration devrait être sauvegardé.
Il s'agit d'un fichier de configuration semblable à ceux d'UNIX, mais avec quelques améliorations. C'est le juste milieu entre l'implémentation d'un langage de script et un fichier de configuration.
  1. Le fichier n'est lu qu'une fois, d'un trait (contrairement aux fichiers INI)
  2. Les noms de variables sont orientés objet.
  3. Les variables peuvent être un nombre, ou un ensemble de nombres entre parenthèses.

#exemple de configuration
display.mode = 0
display.FPS = 30

display.heure.couleur  = (255,255,255)
display.heure.taille   = (0.3,0.3)
display.heure.pos      = (2,2)

display.txt.str     = "Marseille"
display.txt.couleur = (100,200,255)
display.txt.taille  = (0.4,0.4)
display.txt.pos     = (2,16)

spot.TRESHOLD = 35
spot.SENSIBLE = 0.02
spot.TAILLE_OBJET = 8
spot.MHI_DURATION = 1
spot.MAX_TIME_DELTA = 0.5
spot.MIN_TIME_DELTA = 0.05
spot.NBCYCLICFB = 2

trigger.trace = 1
trigger.couleur = (255,0,255)
trigger.action = 6
trigger.param = "Intrusion on camera 6"
trigger.delai = 5000

UTILISATION


Il faut préciser qu'il s'agit d'une caméra qui coute 10€, et que la compression jpg rend l'image encore moins nette...


Un véhicule qui passe est identifié.


Deux véhicules sont identifiés.

video d'un passant (395Ko)