IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

synchroniser l'udate d'un QLabel et capture écran


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 22
    Par défaut synchroniser l'udate d'un QLabel et capture écran
    Bonjour,

    Dans une application utiçlisant Qt4.43 sous window et les livrairies opencv et video inpout, j'ai un problème de synchronisation.

    Dans mon application je commence par créer et paindre 3 QPictures et un QLabel, puis j'affiche le QLabel avec une des QPicture chargée par défaut.

    A partir d'un Key event, je voudrais alterner l'affichage de chaque QPicture dans le QLabel sucsessivement, et prendre une capture à partire d'une webcam, uniquement quand la QImage et chargée dans le QLabel, le tout à une vitesse d'au moins 700 Ml secondes (ce qui semble résonable).

    Quel serait le meilleur moyen pour synchroniser la capture avec l'affichage et l'update du QLabel.

    J'ai tester une boucle, mais impossible de gerer la synchro. Il faudrai un écouteur sur le QLabel pour verifier que la nouvelle QPicture (du style onQLabelupdate...) mais je ne trouve rien....


    Pour être plus claire, le code en théorie est du style :

    Q
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    Label *monLabel = new QLabel(.......);
    QPictur *pic1 = new QPicture(..........);
    QPictur *pic2 = new QPicture(..........);
    QPictur *pic3 = new QPicture(..........);
     
    //------ ici du code pour tracer des graphique sur les 3 QPictures
     
    monLabel.setQPiture(pic1);
     
     
    alternerLesPic();
     
    //-----------une fonction pour alterner les image dans le label
    void alternerLesPic()
    {
     
    for (int i = 0;i<3;i++)
    {
     if (i==0)
    {
     
    monLabel.setPiture(pic0);
    capturerWebCam()
     
    }else if (i==1){
     
    monLabel.setPiture(pic1);
    capturerWebCam()
     
    }else{
     
    monLabel.setPiture(pic2);
    capturerWebCam()
    }
     
    }
     
     
    //-------une fonction pour capturer une image avec la webcam
     
    void capturerWebCam()
    {
     
    //-----ici le code qui capture la frame de la webCam
     
    }
    Mais je n'ai auqu'un moyen de synchroniser la capture par apport l'affichage dans le QLabel.......


    Peut-être qu'une solution avec un traitementy multi treads serait la solution, mais comme je ne maitrise pas trop......

    Merci pour votre aide si vous avez une idée, car je sèche !!


    fbm

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Salut,
    as tu essayé d'utiliser un QTimer pour capturer une image et la mettre dans un label à temps régulier?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 22
    Par défaut
    Hello yann,

    merci pour la réponse.

    En fait je pense que je ne peux pas me baser sur une notion de temps, car la vitesse d'affichage change en fonction des capacitées du système....aussi bien que la vitesse de capture....et je voudrais si possible exploiter au maximum la vitesse d'cquisition....

    Mais tu pense qu'il faudrait :

    1 : lancer un QTimer pour afficher une image dans le QLabel toutes les x ml seconde

    2 : Definir un temps minimum pour être sur que l'affichage est réalisé


    3 : capturer la frame

    4 : Attendre X mlSeconde pour être sûr que la capture est réalisé


    5 : recommencer la boucle ?


    Mais ce qui me gène c'est de definir une valeur d'attente...je ne suis jamais sûr d'être bon...

    Je pensais qu'il devait au moins y avoir un moyen de faire une écoute sur le QLabel pour s'assurer que la mise a jour de lanouvelle image était terminer, puis lancer la capture....

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Dans ce cas un thread qui capture l'image et l'envoie par signal/slot à l'ihm?
    Tu peut te baser sur cette exemple :
    http://qt.developpez.com/doc/4.4/threads-mandelbrot/

    Le problème de ta boucle est que tu bloque surement l'eventloop et tu bloque donc l'ihm

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 22
    Par défaut
    Je vais me plonger dans cet exemple...malheureusement les thread...c'est pas trop mon truc...mais bon c'est l'occasion de m'y coller.....

    Juste une question quand même : si je demande l'affichage de la nouvelle QPicture dans le Qlabel et juste dans une commande suivante la capture via la thread en parallèle....la capture ne risque t-elle pas d'être eventuellement effectuée avant l'affichage complet dans le QLabel.... ??

    désolé pour ces question de newbee.....

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par fbmfbm Voir le message
    Juste une question quand même : si je demande l'affichage de la nouvelle QPicture dans le Qlabel et juste dans une commande suivante la capture via la traid en parallèle....la capture ne risque t-elle pas d'être eventuellement effectuée avant l'affichage complet dans le QLabel.... ??

    désolé pour ces question de newbee.....
    1- C'est plutôt QImage que tu doit utiliser
    2- Fraudais que l'acquisition soit très rapide
    3- tu pourrais utiliser une connexion Qt::BlockingQueuedConnection entre le signal de ta thread et le slot de l'ihm.

    Mais un conseil, essaie d'abord avec un QTimer avant d'essayer un thread.

Discussions similaires

  1. [VB.Net] Capture écran
    Par Fullmetal82 dans le forum Windows Forms
    Réponses: 14
    Dernier message: 07/02/2007, 06h56
  2. Capture écran de différent webmail
    Par kerbernic dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 16/11/2006, 16h06
  3. Impression d'une capture écran
    Par ero-sennin dans le forum Delphi
    Réponses: 1
    Dernier message: 15/10/2006, 15h09
  4. Capture écran dans le menu contextuel
    Par Furius dans le forum Autres Logiciels
    Réponses: 11
    Dernier message: 02/09/2005, 19h35
  5. [C#] Capture écran dans pictureBox
    Par Gauden dans le forum Windows Forms
    Réponses: 5
    Dernier message: 05/05/2004, 10h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo