Acquisition du flux d`images sous Qt

Transcription

Acquisition du flux d`images sous Qt
Note d’application
Acquisition du flux d’images d’une
caméra IP sous Qt
Ndack THIAM – P11A09
Génération d’alertes par traitement d’images
Client : Yannick DICHAMPT
Tuteur industriel: Pascal FICKINGER
Tuteur Technique : Jacques LAFFONT
Acquisition du flux d’images d’une caméra IP sous Qt
Ndack THIAM
GE3
Page 1
Acquisition du flux d’images d’une caméra IP sous Qt
Sommaire
Table des illustrations ............................................................................................................. 3
Introduction.............................................................................................................................. 4
1.
Caractéristiques de la caméra IP .................................................................................... 5
2.
Présentation de la librairie Qt et du logiciel Qt Creator ............................................. 5
2.1.
La librairie Qt ................................................................................................ 5
2.2. Comment installer Qt ? ................................................................................... 6
2.3.
3.
4.
Le logiciel Qt Creator ................................................................................... 7
Acquisition du flux d'images sous Qt ........................................................................... 8
3.1.
Communication Caméra-PC ....................................................................... 8
3.2.
Récupération d’images sous Qt ................................................................. 9
Algorithmes .................................................................................................................... 11
4.1.
Initialisation des buffers, du serveur et des sockets ............................ 11
4.2.
Connexion de la caméra au serveur......................................................... 11
4.3.
Envoie de la requête d’images à la caméra ............................................ 12
4.4. Récupération du flux d’images de la caméra et analyse de l’entête
HTTP ........................................................................................................................ 12
4.5.
Déconnexion de la caméra ........................................................................ 13
Conclusion .............................................................................................................................. 14
Ndack THIAM
GE3
Page 2
Acquisition du flux d’images d’une caméra IP sous Qt
Table des illustrations
Figure 1 : Synoptique du système ....................................................................................... 4
Figure 2 : Caméra IP TRENDnet TV-IP 422W ................................................................... 5
Figure 3 : Interface d'accueil Qt Creator ............................................................................. 7
Figure 4 : Communication Caméra - PC ............................................................................. 8
Figure 5 : Synthèse acquisition d'images sous Qt ............................................................ 9
Ndack THIAM
GE3
Page 3
Acquisition du flux d’images d’une caméra IP sous Qt
Introduction
Face au nombre grandissant de personnes âgées en France, on assiste à une
forte admission ces dernières dans les maisons de retraite. Leur assistance par le
personnel soignant devient donc de plus en plus lourde. Afin d'aider le personnel
soignant dans leurs tâches, notre client se propose de mettre en place un système de
surveillance à distance et d'assistance. Dans ce cadre, il nous est proposé le projet
intitulé "Génération d'alerte par traitement d'images".
Cette note d’application permet de configurer une caméra IP de référence TV-IP
422W sous le système d’exploitation linux et d’acquérir le flux d’images de cette
dernière sous le logiciel Qt creator. Ce flux d’image acquis à partir de la caméra
permettra, après son traitement dans l’unité de traitement, de déterminer la présence
d’une personne filmée dans une zone d’intérêt. La figure 1 ci-dessus donne une vue
d’ensemble du système « Génération d’alertes par traitement d’images ».
Figure 1 : Synoptique du système
Ndack THIAM
GE3
Page 4
Acquisition du flux d’images d’une caméra IP sous Qt
1. Caractéristiques de la caméra IP
Figure 2 : Caméra IP TRENDnet TV-IP 422W
La caméra ci-dessus que nous disposons est une caméra IP de référence TV-IP 422W.
Elle présente les caractéristiques suivantes :

Enregistrement vidéo MJPEG et MPEG-4 de haute qualité jusqu'à 30 images par
seconde.

La lentille infrarouge vous permet de bien voir de jour comme de nuit (visibilité
la nuit jusqu'à 5 mètres)

Supporte la mise en réseau TCP/IP, la messagerie SMTP, le HTTP, Samba et les
autres protocoles Internet Protocol TCP/IP, UDP, DHCP, HTTP, RTP, RTSP,
RTCP, etc.

Vitesse de défilement de l'image : 30fps @VGA, QVGA, QQVGA

Paramétrage de l'image : Brillance, contraste, saturation réglables

Paramétrage de la vitesse de défilement 1 à 30 fps(trames par seconde)

SE supportés Windows 2000/XP/Vista

Hardware Specifications Système, SE Linux

LAN 10/100Mbps Auto MDIX
2. Présentation de la librairie Qt et du logiciel Qt Creator
2.1.
La librairie Qt
Qt est une bibliothèque multiplateforme écrite en C++ et faite pour être utilisée à la
base en C++, mais il est aujourd'hui possible de l'utiliser dans d'autres langages
comme Java, Python, etc.
Ndack THIAM
GE3
Page 5
Acquisition du flux d’images d’une caméra IP sous Qt
Qt est en fait plus qu'une bibliothèque c'est un ensemble de bibliothèques
appelé Framework ce qui signifie que vous avez à votre disposition un ensemble
d'outils pour développer des programmes plus efficacement.
Les différentes bibliothèques, appelées "modules" que contient Qt sont entre autres :

Module GUI : c'est toute la partie création de fenêtres.

Module OpenGL : Qt peut ouvrir une fenêtre contenant de la 3D gérée par
OpenGL.

Module de dessin : pour dessiner dans une fenêtre (en 2D), c’est un module de
dessin est très complet.

Module réseau : Qt fournit une batterie d'outils pour accéder au réseau, que ce
soit pour créer un logiciel de Chat, un client FTP, un client Bittorent, un
lecteur de flux RSS...

Module SVG : possibilité de créer des images et animations vectorielles, à la
manière de Flash.

Module de script : Qt supporte le Javascript (ou ECMAScript), qu’on peut
réutiliser dans des applications pour ajouter des fonctionnalités, sous forme de
plugins par exemple.

Module XML : c'est un moyen très pratique d'échanger des données avec des
fichiers formés à l'aide de balises, un peu comme le XHTML.

Module SQL : permet un accès aux bases de données (MySQL, Oracle,
PostgreSQL...).
2.2. Comment installer Qt ?
Pour installer Qt, il faut d’abord commencer par télécharger Qt sur le site de Qt.
On vous demandera de choisir entre la version LGPL et la version commerciale.
Sachant que la version LGPL est gratuite, il faut donc la choisir.
Il faut ensuite choisir entre :

Qt SDK : la bibliothèque Qt + un ensemble d'outils pour développer avec Qt,
incluant un IDE spécial appelé Qt Creator.

Qt Framework : contient uniquement la bibliothèque Qt.
Il est plus judicieux de choisir Qt SDK, car il contient un certain nombre d'outils qui
vont grandement vous simplifier la vie.
Choisissez soit "Qt pour Windows: C++", "Qt pour Linux/X11: C++" ou "Qt pour
Mac: C++" en fonction du système d'exploitation que vous utilisez.
Ndack THIAM
GE3
Page 6
Acquisition du flux d’images d’une caméra IP sous Qt
NB : Si vous êtes sous Linux, et notamment sous Debian ou Ubuntu, il est plus facile
d’installer directement le paquet qtcreator avec la commande aptget install qtcreator. La version sera peut-être légèrement plus ancienne mais
l'installation sera ainsi centralisée et plus facile à gérer.
2.3.
Le logiciel Qt Creator
Qt Creator est un environnement multi-plateforme de développement intégré
(IDE) adaptés aux besoins des développeurs de Qt. Qt Creator fonctionne sur
Windows, Linux/X11 et systèmes Mac OS X d'exploitation de bureau, et permet aux
développeurs de créer des applications pour le bureau et plates-formes mobile.
Bien qu'il soit possible de développer en C++ avec Qt en utilisant notre IDE (comme
Code::Blocks) il est plus intéressant d'utiliser l'IDE Qt Creator que vous venez
d'installer. Il est particulièrement optimisé pour développer avec Qt. En effet, c'est un
programme tout-en-un qui comprend entre autres :

Un IDE pour développer en C++, optimisé pour compiler des projets utilisant
Qt (pas de configuration fastidieuse)

Un éditeur de fenêtres, qui permet de dessiner facilement le contenu de ses
interfaces à la souris

Une documentation pour tout savoir sur Qt
Voici à quoi ressemble Qt Creator lorsque vous le lancez pour la première fois :
Figure 3 : Interface d'accueil Qt Creator
Ndack THIAM
GE3
Page 7
Acquisition du flux d’images d’une caméra IP sous Qt
3. Acquisition du flux d'images sous Qt
Avant de commencer l’acquisition sous Qt, il faut d’abord s’assurer que la
communication entre le PC et la caméra est bien établie.
3.1.
Communication Caméra-PC
La caméra IP peut être assimilée à un serveur qui répond à un client (PC). La
caméra choisie est une entité http, donc pour pouvoir faire la communication avec le
PC, nous devons utiliser le mode connecté TCP.
Figure 4 : Communication Caméra - PC
Elle n’est configurable que sous le système d’exploitation Windows. Ainsi,
pour établir la communication entre la caméra et le PC sous Linux, on a deux
possibilités :
 Creation d’une seule connexion
Pour ce faire, suivre les étapes suivantes :
o Déterminer l’adresse ip du réseau local,
o Choisir une adresse IP Caméra fixe, pour notre application on a comme IP
Caméra 172.16.31.224 avec un masque de réseau 255.255.240.0,
o Mettre l’adresse IP du réseau local en DHCP,
o Caméra doit se connecter automatiquement au réseau local,
o Envoyer un Ping à l’adresse IP de la caméra via le terminal pour tester la
connectivité.
Ndack THIAM
GE3
Page 8
Acquisition du flux d’images d’une caméra IP sous Qt
 Création de deux connexions
Nous avons l’algorithme ci-dessous
o Connexion caméra avec un IP statique 192.168.151.240,
o Connexion réseau local avec un IP statique 192.168.151.241,
o Changer de connexion pour basculer d’une connexion à une autre,
o Envoyer un Ping à l’adresse IP de la caméra via le terminal pour tester la
connectivité entre Caméra et PC.
NB : Pour toutes les deux possibilités, il faut avoir préalablement configuré la caméra
sous le système d’exploitation Windows afin de choisir une adresse IP statique à la
caméra. Pour la configuration de la caméra, voir la note d’application de Mlle Derji
dans le projet P10A08 « Analyse Automatique des postures ».
3.2.
Récupération d’images sous Qt
Nous disposons d'abord d'un programme codé en C++ qui permet d'acquérir
le flux d’images de la caméra IP mais comme on devait intégrer tous les programmes
dans une interface graphique sous Qt Creator, nous avons donc recompilé le même
programme sous Qt Creator et ensuite les intégré avec les autres programmes
(Détection de personnes et création de zones d’intérêt). Pour ce faire, il faut veiller
sur deux points : Mettre les bonnes librairies (Qt Creator et caméra) et éviter les
problèmes de conflits entre fonctions.
Conflit
entre les
fonctions
librairies
Acquisiti
on flux
sous Qt
Figure 5 : Synthèse acquisition d'images sous Qt
 Les bonnes librairies
On distingue trois sortes de librairies à inclure :
 Les includes pour le langage C++
#include <iostream>
#include <string>
#include <fstream>
Ndack THIAM
GE3
Page 9
Acquisition du flux d’images d’une caméra IP sous Qt
 Les includes pour Qt
#include <Qfile>
#include <Qt>
#include <QApplication>
#include <QTcpServer>
#include <QMessageBox>
#include <QTcpSocket>
#include <QtNetwork>
#include <qlist.h>
#include <QtGui>
 Les includes pour la caméra
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <time.h>
Une fois que les bonnes librairies sont incluses, le deuxième défi à relever est de
résoudre les problèmes de conflits entre fonctions.
 Les problèmes de conflits en fonction
Lors de l’intégration du programme d’acquisition d’images avec les autres
programmes sous Qt Creator, nous avons eu des erreurs dues à des conflits de
fonctions. Effet, la fonction « connect », qui permet à la caméra d’établir la connexion
au point d’accès afin d’établir la communication avec le serveur, est utilisée sous Qt
comme une connexion d’un signal à un slot. Un signal est un message envoyé par un
widget lorsqu'un évènement se produit (Par Exemple : on a cliqué sur un bouton).
Un slot est la fonction qui est appelée lorsqu'un évènement s'est produit.
Ndack THIAM
GE3
Page 10
Acquisition du flux d’images d’une caméra IP sous Qt
En effet, pour créer un bouton qui permet d’ajouter un type de zone d’intérêt, il faut
définir la nature du bouton et ensuite créer un slot qui permet de connecter le bouton
« ajouter » à la fonction associée à savoir « connexion du clic de bouton à l’ajout d’un type
de zone ».
Fonction connect
pour le bouton
« ajouter »
Ainsi, pour éviter ce problème, il faut ajouter « :: » devant la fonction connect utilisée
par la caméra. Ceci permet à Qt Creator de distinguer les deux fonctions et de
chercher la fonction connect au-delà des librairies incluses pour Qt. Voir ci-dessous.
Fonction connect pour
connecter le point d’accès de
la caméra
4. Algorithmes
4.1.
Initialisation des buffers, du serveur et des sockets
4.2.
Connexion de la caméra au serveur
Ndack THIAM
GE3
Page 11
Acquisition du flux d’images d’une caméra IP sous Qt
4.3.
Envoie de la requête d’images à la caméra
4.4.
Récupération du flux d’images de la caméra et analyse de l’entête HTTP
Ndack THIAM
GE3
Page 12
Acquisition du flux d’images d’une caméra IP sous Qt
4.5.
Déconnexion de la caméra
Ndack THIAM
GE3
Page 13
Acquisition du flux d’images d’une caméra IP sous Qt
Conclusion
Cette note d’application permet, d’une part, d’établir la communication entre
la caméra IP TRENDnet TV IP 422W et le PC sous le système d’exploitation Linux.
D’autre part, elle permet de récupérer le flux d’images de cette caméra sous Qt
Creator avec la librairie multiplateforme Qt. Pour pouvoir configurer la caméra sous
Windows (étape préalable afin de choisir une adresse IP statique à la caméra avant
de passer au système d’exploitation Linux), il faut se référer à la note d’application
de Mlle Derji (Projet P10A08: Analyse automatique de posture).
Ndack THIAM
GE3
Page 14

Documents pareils