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 :

GUI charger une image à partir d'un bouton [Débutant]


Sujet :

Interfaces Graphiques

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 37
    Points : 33
    Points
    33
    Par défaut GUI charger une image à partir d'un bouton
    Bonjour,

    J'ai le problème suivant. Je souhaiterais permettre à l'utilisateur de charger une image à partir d'un dossier lorsqu'il appuie sur un bouton.

    J'ai donc écrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    uicontrol('Style', 'pushbutton', 'String', 'Load frames', 'Position', [20 350 80 30],'Callback', 'load_frame');
    Ma fonction load_frame.m
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function [Image,list]=load_frame
     
        [FileName, FilePath] = uigetfile ('*.tif');
        ext = '*.tif';
        chemin = fullfile(FilePath,ext);
        list = dir(chemin);
        Image = imread(strcat(FilePath,FileName));
     
    end
    Mais list est image ne sont pas stockées dans les variables lorsque j'appuie sur le bouton. Comment faire ?

    D'autre part j'aurais souhaité écrire toutes les fonctions dans le même fichier de mon GUI, mais matlab n'a pas l'air d'aimer ça, est ce que c'est possible ?

    Merci d'avance

    F

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 37
    Points : 33
    Points
    33
    Par défaut
    J'ai résolu ma première question tout seul en fait Mais je cale toujours avec la seconde

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Oui c'est tout à fait possible, mais à quelques précautions près :
    Je vois que tu as spécifié le end de la fonction, il faudra l'ajouter pour toutes.
    Tu ne pourras pas utiliser la syntaxe chaine de caractères pour tes Callback comme tu le fais car cet appel se fait dans le Workspace global, où seule la fonction principale du fichier sera visible. Je te conseille plutôt la forme handle de fonction (cf. FAQ Comment utiliser une fonction callback ?) qui elle ne posera pas de problème.

    PS : tu sembles vouloir retourner des arguments, mais une fonction callback n'en retourne pas. Je te conseille la lecture de ce tutoriel pour la transmission des arguments à travers les différentes fonctions..

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 37
    Points : 33
    Points
    33
    Par défaut
    Merci pour ta réponse, j'ai regardé ton lien. J'ai utilisé la seconde approche mais j'ai toujours le même problème qu'avant

    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
    figure('units','pixels','numbertitle','off','name','[GUI] Utilisation de GUIDATA','Position',[500 500 800 400],'tag','interface');
    uicontrol('Style', 'pushbutton', 'String', 'Load frames', 'Position', [20 350 80 30],'Callback', @load_frame2,'tag','bouton_load'); 
     
    data.Image=zeros();
    data.list=struct([]);
    data=guihandles(gcf);
     
     
    function load_frame2
     
    data=guidata(gcbf);
    [FileName, FilePath] = uigetfile ('*.tif');
    ext = '*.tif';
    chemin = fullfile(FilePath,ext);
    set(data.list,dir(chemin));
    set(data.Image,imread(strcat(FilePath,FileName)));
     
    guidata(gcbf,data)
    Error using test_GUI>load_frame2
    Too many input arguments.

    Error while evaluating uicontrol Callback

  5. #5
    Invité
    Invité(e)
    Par défaut
    Extrait du sujet de FAQ qui précède :
    Citation Envoyé par FAQ - Qu'est-ce qu'une fonction callback ?
    La fonction callback devra se présenter sous la forme suivante avec deux entrées :

    Sans GUIDE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function nomFonction(hObject, eventData)

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 37
    Points : 33
    Points
    33
    Par défaut
    Merci mais il n'a toujours pas l'air d'aimer. C'est pas possible d'enregistrer un tableau ou une structure dans data.I ?

    Error in test_GUI/load_frame2 (line 33)
    set(data.I,imread(strcat(FilePath,FileName)));

    Error while evaluating uicontrol Callback

  7. #7
    Invité
    Invité(e)
    Par défaut
    Que représente le champ I ? Un handle d'un objet Image ? Un champ quelconque où tu veux stocker ton image ?
    • Dans le premier cas, il manque le nom de la propriété 'CData'.
    • Dans le second, directement (on préfère fullfile à strcat : cf. FAQ) data.I = imread( fullfile(FilePath,FileName) );

    PS : pense à toujours donner les messages d'erreur au complet.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 37
    Points : 33
    Points
    33
    Par défaut
    je crois que j'ai compris, ça fonctionne maintenant !
    merci!

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

Discussions similaires

  1. [PPT-2003] Charger une image à partir d'un browser
    Par athila78 dans le forum VBA PowerPoint
    Réponses: 2
    Dernier message: 26/04/2012, 15h14
  2. Charger une image à partir d'une collection d'images
    Par toutounesan dans le forum VB.NET
    Réponses: 34
    Dernier message: 15/06/2011, 11h16
  3. comment charger une image à partir de vignettes ?
    Par ml1234 dans le forum Mise en page CSS
    Réponses: 0
    Dernier message: 28/05/2009, 08h17
  4. Réponses: 1
    Dernier message: 18/04/2009, 23h15
  5. Charger une image à partir d'une chaine HEXA
    Par Argonz dans le forum Delphi
    Réponses: 4
    Dernier message: 15/03/2007, 08h38

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