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 :

Utilisation de guihandles et guidata


Sujet :

Interfaces Graphiques

  1. #1
    Membre habitué Avatar de larimoise
    Inscrit en
    Octobre 2006
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 220
    Points : 197
    Points
    197
    Par défaut Utilisation de guihandles et guidata
    Salut,
    je viens de créer une interface Gui pour la première fois, en m'inspirant d'un tutoriel. Dans mon interface j'ai une fonction que j'ai créer avant qui me permet de choisir une image à partir d'une boite de dialogue , j'ai mis donc un pushbutton et lorsque je clique dessus je choisie une image qui sera par la suite affichée. Mon problème est que j'ai ajouté un bouton et lorsque je clique dessus je doit faire un traitement a l' image que j 'ai lu avant et l'afficher, et bien entendu la variable que j'ai utilisé avant n'est pas reconnue. J 'ai lu les tuto de Dut mais je ne sais pas trop où je doit mettre guidata et guihandles.
    Merci d'avance.
    MATLAB Version 7.13.0.564 (R2011b)
    Microsoft Visual studio 2010
    LabView 2013 service pack1

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Utilises-tu UIGETFILE pour sélectionner le fichier contenant l'image ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Membre habitué Avatar de larimoise
    Inscrit en
    Octobre 2006
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 220
    Points : 197
    Points
    197
    Par défaut
    Oui Dut, d'ailleurs voici le scripte de la fonction que j'appelle dans le gui et qui me permet de lire l'image:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function im1=lirimage;
    [filename, pathname,Bool] = uigetfile( ...
        {'*.jpg;*.gif;*.tif;*.pgm;*.bmp', 'All images Files (*.jpg, *.gif, *.tif, *.bmp)'}, ...
        'Pick a file');
    if Bool
     
        [im1,map,ALPHA]=imread([pathname '\' filename]);
    end
    je l'ai quelque part dans mon work, et je l'utilise quand j'en ai besoin.
    MATLAB Version 7.13.0.564 (R2011b)
    Microsoft Visual studio 2010
    LabView 2013 service pack1

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Voici un petit exemple utilisant GUIDATA/GUIHANDLES :

    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
    function myGUI
     
    fig=figure;
     
    axes('tag','myAxes','visible','off')
     
    uicontrol('units','normalized',...
        'position',[.02 .2 .1 .05],...
        'string','Select',...
        'tag','selectbutton',...
        'callback',@selectimage)
     
    uicontrol('units','normalized',...
        'position',[.02 .3 .1 .05],...
        'string','Display',...
        'tag','displaybutton',...
        'callback',@affichimage)
     
    h=guihandles(fig);
    guidata(fig,h);
     
    function selectimage(obj,event)
     
    h=guidata(gcbf);
    h.img=lirimage;
    guidata(gcbf,h);
     
     
    function affichimage(obj,event)
     
    h=guidata(gcbf);
    imagesc(h.img,'parent',h.myAxes)
    axis image
    Et un autre utilisant les fonctions imbriquées (Nested Functions) :
    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
    function myGUI2
     
    fig=figure;
     
    axes('tag','myAxes','visible','off')
     
    uicontrol('units','normalized',...
        'position',[.02 .2 .1 .05],...
        'string','Select',...
        'tag','selectbutton',...
        'callback',@selectimage)
     
    uicontrol('units','normalized',...
        'position',[.02 .3 .1 .05],...
        'string','Display',...
        'tag','displaybutton',...
        'callback',@affichimage)
     
    h=guihandles(fig);
     
        function selectimage(obj,event)
     
            h.img=lirimage;
     
        end
     
     
        function affichimage(obj,event)
     
            imagesc(h.img,'parent',h.myAxes)
            axis image
     
        end
     
    end
    Il faudrait bien entendu ajouter des contrôles d'erreur dans ces deux codes

    Note, dans lirimage, il est préférable d'utiliser FULLFILE comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [im1,map,ALPHA]=imread(fullfile(pathname,filename));
    Et il n'y a pas de raison de demander 3 arguments de sortie à IMREAD alors que lirimage n'en renvoit qu'un.
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  5. #5
    Membre habitué Avatar de larimoise
    Inscrit en
    Octobre 2006
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 220
    Points : 197
    Points
    197
    Par défaut
    Ok, je vais tester. Merci
    MATLAB Version 7.13.0.564 (R2011b)
    Microsoft Visual studio 2010
    LabView 2013 service pack1

  6. #6
    Membre habitué Avatar de larimoise
    Inscrit en
    Octobre 2006
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 220
    Points : 197
    Points
    197
    Par défaut
    Salut,
    tout d'abord je te remercie Dut pour les deux exemples,qui m'ont permis de mieux comprendre l'utilisation de Guidata et Guihandles, et les fonctions imbriquées. J'avais fait l'interface au départ avec l'aide du guide, et comme tu l'a dit dans ton tuto c'est difficile à exploiter, d'ailleurs je n'ai su utiliser ni les fonctions imbriquées ni guidata/guihandles pour résoudre mon problème, je me suis donc inspirée de ton exemple cité au dessus et fait l'interface "à la main", et j'ai eu le résultat souhaité. J'ai juste remplacé imagesc par imshow pour pouvoir utiliser subplot et afficher l'image avant traitement et celle après traitement dans la même figure.J'ai aussi rectifié la fonction lirimage.
    Mon but maintenant est de refaire cette interface pour des images IRM (volumes), mais en attendant je met le post comme résolu.
    Merci encore Dut
    MATLAB Version 7.13.0.564 (R2011b)
    Microsoft Visual studio 2010
    LabView 2013 service pack1

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

Discussions similaires

  1. Utilisation de guidata
    Par oliv27400 dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 04/06/2010, 17h59
  2. problème d'utilisation des de userdata, guidata, appdata
    Par Meherbs dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 06/05/2010, 17h22
  3. [Débutant] GUIDATA GUIHANDLES
    Par nocolach dans le forum Interfaces Graphiques
    Réponses: 15
    Dernier message: 27/06/2008, 20h35
  4. Problème avec GUIDATA GUIHANDLES
    Par soeursourire dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 23/10/2007, 15h53
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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