Bonjour,

je suis en train de dévellopez une interface graphique pour contrôler des caméras (2 en ce moment) et une des principales fonctions du programme consiste à afficher les images envoyées par les caméras. Sur mon interface graphique j'ai donc 3 zones d'affichages (ie trois QLabel) : une pour chaque caméra et une commune aux deux (chaque caméra ne filme qu'une couleur).
Les images sont acquises dans deux threads secondaires (un thread par caméra) et sont ensuite émises vers leur affichage respectif.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
//connection vers la zone d'affichage comune
connect(cameraS[i], SIGNAL(hotImageC(QImage,int)), mergeScreen, SLOT(newImage(QImage,int)), Qt::UniqueConnection);
//connection vers la zone d'affichage spécifique
connect (myCamera, SIGNAL(hotImage(const QPixmap &)), this, SLOT(newImage(const QPixmap &)), Qt::UniqueConnection);
j'ai utilisé Qt::UniqueConnection pour éviter l'engorgement de l'event loop.
mais même malgré cela quand les deux caméras filment en même temps l'affichage finit (entre 1s et 30 sec de fluidité) et la mémoire utilisée par le programme monte en flèche.....

Il faut savoir que chaque images a une résolution de 496*658 sen 16 bit. et que le frame rate est d'environ 17 à 24 fps.

merci d'avance pour votre aide