Bonjour,
Je suis entrain de construire une application de Video Surveillance.
J'ai pour l'instant un unique software qui:
- Configure différentes cameras IP (ip, port, luminosité, contraste, ...). Et qui pour chaque camera configure les paramètres du tracking (threshold, refresh, min_size, ...) et de des différentes alarmes (traverser une ligne, entrer dans une zone, ...).
...- Reçois des images en JPEG des camera IP configurées.
- Analyse chaque et obtient la taille et position des objets en mouvements (blob).
- Sauvegarde sur un disque dur l'image JPEG reçu avec la position des différents blobs pour cette image.
- Génère pour chaque blob une trajectoire en regardant ses positions durant plusieurs frames.
- Les trajectoires des différents blob sont analysées afin d'émettre une/des alarmes (qui sont sauvegarder dans une base de données MySQL).
...- Les blobs et leurs trajectoires sont dessiner sur les images JPEG et visualiser par une GUI.
- La GUI check quelles alarmes ont été émises, et fait apparaitre un Pop-UP avec les infos respective des alarmes émises.
- La GUI a aussi un module qui permet d'obtenir un historique des alarmes émises en regardant la base de données MySQL.
------------
Maintenant (un peu tard), je pense construire une application client serveur afin de pouvoir séparer ma GUI du reste de mon code.
Cela me permet d'avoir un serveur qui fait le gros du travail (2,3,4,5,6) et un client qui :
- doit pouvoir configurer mes objets Camera+Tracking+Alarms qui sont sur le serveur. (1)
- doit visualiser (images+positions des blobs+alarms). (7 et 8)
- doit pouvoir récupérer l'historique des alarmes qui se trouve dans la BD MySQL (Directement ou en passant par le serveur ??). (9)
Le client est une GUI écrit avec QT et sera le plus souvent sur le localhost mais devrais pouvoir se connecter depuis internet (en mode secure).
Un client https est aussi envisageable.
-------------
Maintenant que vous avez une idée général j'aimerais savoir comment me conseillez vous de m'y prendre.
Old-School:
Avec des sockets je serialize chaque objets pour échanger les paramétrés)
Envois JPEG+positions par TCP/IP.
Envois des alarmes par TCP/IP ou lecture directe sur la BD.
Quel librairies utiliser pour faire ca? Boost, QT, libcurl, ...
New-School
CORBA, RPC, ICE ou quelque chose dans le genre.
Ca m'a l'air assez intéressant mais j'ai un peu peur au niveau de la vitesse, car se sont bcp d'infos en temps réels.
Voila donc j'espère vos conseils, expérience vécus, suggestions, ou livre et tutoriel a lire à ce sujet?
Partager