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

Interfaces Graphiques Discussion :

Pause sur une interface de lecture d'images


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 77
    Par défaut Pause sur une interface de lecture d'images
    Bonjour à tous,

    J'ai un petit souci dans le développement d'une interface graphique

    Un pushbutton "lecture" me permet de lire une séquence d'image et un pushbutton pause me permet de mettre en pause cette lecture

    Dans un premier cas qui fonctionne bien (le bouton pause remplit bien son rôle) la lecture et la pause ne concerne qu'une image sur un axes

    code bouton pause :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function pushbutton2_Callback(hObject, eventdata, handles)
     
    handles.pau=1;
    guidata(hObject, handles);
    code bouton lecture
    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
     
    function pushbutton1_Callback(hObject, eventdata, handles)
     
    handles.pau=0;
    guidata(hObject, handles);
     
     
     
    while handles.Nimage< handles.NbImages
        %     pause(0.2)
        drawnow
        handles = guidata(hObject);
        if handles.pau==1
            guidata(hObject, handles);
            return
        end
     
        handles.Nimage=handles.Nimage+handles.vl;
        if handles.Nimage >= handles.NbImages
            handles.Nimage=handles.NbImages;
            set(handles.edit2,'String',handles.Nimage);
        end
     
     
        handles.image=cell2mat(handles.visudetour(1,handles.Nimage));
        set(handles.edit2,'string',handles.Nimage);
        guidata(hObject, handles);
        axes(handles.axes1);
        imagesc(handles.image);
        axis image
        colorbar
        caxis([handles.c1Ti1 handles.c2Ti1])
        guidata(hObject, handles);
        %
        %
        %
    end
     
    guidata(hObject, handles);

    Dans mon second cas par contre le bouton pause fonctionne de manière tres aléatoire il faut le plus souvent appuyer plusieurs fois sur le bouton pour que la pause soit effective, dans ce cas je met à jour une image sur un axe 1 et un graph sur un axe 2.
    Les codes me semblent similaires j'ai vérifié en changeant une couleur sur l'interface que l'appui sur le bouton pause était effectif du coup je vois vraiment pas d'où vient ce problème

    code bouton pause :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function pushbutton7_Callback(hObject, eventdata, handles)
    handles.pau=1;
    % set(handles.pushbutton6,'BackgroundColor',[1,0.7,0.4]);
    % set(handles.pushbutton7,'BackgroundColor','g');
    guidata(hObject, handles);
    code bouton lecture :
    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
    47
    48
    49
    50
    51
    52
    53
     
    function pushbutton6_Callback(hObject, eventdata, handles)
    handles.pau=0;
    % set(handles.pushbutton7,'BackgroundColor',[1,0.7,0.4]);
    % set(handles.pushbutton6,'BackgroundColor','g');
    guidata(hObject, handles);
     
     
    while handles.N4<handles.NbImages
     
        drawnow
        handles = guidata(hObject);
     
     
        if handles.pau==1
     
            guidata(hObject, handles);
            return
        end
     
        handles.N4=handles.N4+handles.vf2;
        if handles.N4 >= handles.NbImages
            handles.N4=handles.NbImages;
            set(handles.edit4,'String',handles.N4);
        end
     
     
        handles.image=cell2mat(handles.donnee(1,handles.N4));
        set(handles.edit4,'string',handles.N4);
        guidata(hObject, handles);
        axes(handles.axes1);
        % cla
        imagesc(handles.image);
        axis image
        colorbar
        caxis([handles.c1Ti1 handles.c2Ti1])
        %     impixelinfo
        guidata(hObject, handles);
        axes(handles.axes2);
        % cla
        plot(handles.point(:,2),handles.point(:,1),'--','LineWidth',2)
        hold on
        plot(handles.point(handles.N4,2),handles.point(handles.N4,1),'--rs','LineWidth',2,...
            'MarkerEdgeColor','k',...
            'MarkerFaceColor','g',...
            'MarkerSize',15)
        guidata(hObject, handles);
        hold off
     
        guidata(hObject, handles);
    end
     
    guidata(hObject, handles);

    Si quelqu'un a une explication à ce phénomène ca m'interesse fortement, j'en perd mon latin la :p .

    Merci d'avance, je suis preneur de toute remarque/idée etc ...

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 77
    Par défaut
    L'interface dans laquelle je rencontre le problème est plus complexe que celle qui déroule correctement, du coup je me demande si ce n'est pas la fonction
    drawnow qui pose problème.

    en effet si je modifie mon code de cette facon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
        drawnow
        pause(0.2);
        handles = guidata(hObject);
    ce se passe mieux le 0.2 parait être le minimum pour que le pause soit bien pris en compte.


    Ce qui m'embête un peu par contre c'est que du coup ma lecture d'images est fortement ralentie, y aurait il une autre solution sachant qu'à moins de 0.2 en pause je rencontre encore des problèmes ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 77
    Par défaut
    Une solution qui semble fonctionner :

    code bouton pause :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function pushbutton2_Callback(hObject, eventdata, handles)
    set(handles.pushbutton2, 'UserData', 1);
    guidata(hObject, handles);
    code bouton lecture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function pushbutton5_Callback(hObject, eventdata, handles)
     
     
     
     
    set(handles.pushbutton2, 'UserData', 0);    
     
    guidata(hObject, handles);      
     
    while handles.Nimage< handles.NbImages && get(handles.pushbutton2 'UserData') == 0

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Insérer une image sur une interface Tcl/Tk
    Par habasque dans le forum R
    Réponses: 1
    Dernier message: 28/09/2011, 15h13
  2. Afficher une image sur une interface
    Par alexismarque dans le forum Interfaces Graphiques
    Réponses: 11
    Dernier message: 24/06/2009, 19h49
  3. hyperlink sur une interface
    Par corrupt3d dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 27/05/2007, 23h44
  4. Conseil sur une bibliothèque de traitement d'image
    Par fumidu dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/11/2006, 13h31
  5. Réponses: 2
    Dernier message: 26/01/2006, 15h11

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