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 :

interface graphique pour traitement d'image


Sujet :

Interfaces Graphiques

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Points : 8
    Points
    8
    Par défaut interface graphique pour traitement d'image
    Bonjour,
    J'ai deja commencé à créer une interface graphique avec 2 boutons et un axe : le premier bouton me premet d'ouvrir l'image et de lafficher dans l'axe et le deuxieme réalise mon programme afin de tracer les contours et de les numérotés mais l'image traitée s'ouvre dans une nouvelle fenetre et si je crée un autre axe les images ne se mettent pas dans les bons axes, comment puis resoudre ça?

    Je voudrais aussi pouvoir sélectionner l'image sur le disque afin de pouvoir en changer facilement!!

    Merci beaucoup!!

  2. #2
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Citation Envoyé par spinalrock Voir le message
    Bonjour,
    J'ai deja commencé à créer une interface graphique avec 2 boutons et un axe : le premier bouton me premet d'ouvrir l'image et de lafficher dans l'axe et le deuxieme réalise mon programme afin de tracer les contours et de les numérotés mais l'image traitée s'ouvre dans une nouvelle fenetre et si je crée un autre axe les images ne se mettent pas dans les bons axes, comment puis resoudre ça?
    Normalement tu dois pouvoir choisir les axes dans lesquels tu vas afficher ta nouvelle image.
    Pour te donner plus d'infos il faudrait que toi aussi tu nous en donne : quelle commande(s) utilises-tu pour afficher tes images ?

    Citation Envoyé par spinalrock Voir le message
    Je voudrais aussi pouvoir sélectionner l'image sur le disque afin de pouvoir en changer facilement!!
    Pour ça regarde du côté de la fonction UIGETFILE.

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Points : 8
    Points
    8
    Par défaut
    Ben en fait je fais juste ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function pushbutton1_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     s=imread ('IMG_0687_small.JPG');
     imshow (s)
    Mais je comprends pas trop quand je vois des lignes de code pour par exemple la fonction uigetfile, où on doit crire l'instruction


    Merci

  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 313
    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 313
    Points : 52 939
    Points
    52 939
    Par défaut
    Comme Caro te l'a déjà fait remarqué, tu devrais lire et surtout comprendre les tutoriels consacrés aux interfaces graphiques

  5. #5
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Et tu peux aussi chercher un peu dans le Forum.
    Par exemple, cette discussion : [Débutant] Aide pour une interface devrait t'aider.

  6. #6
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Points : 8
    Points
    8
    Par défaut
    Merci pour votre aide mais j'ai beau lire et relire les exemples et les tutoriels quand j'essai de le faire ca ne marche pas!!!
    Je pense que matlab n'est vraiment pas fait pour moi!!!

  7. #7
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    C'est comme pour n'importe quel langage, il faut juste essayer et essayer encore

    Et il faut faire les choses au fur et à mesure donc :
    qu'as-tu essayé ?
    quelle est l'erreur ou le problème ?

  8. #8
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Points : 8
    Points
    8
    Par défaut
    J'ai juste essayer de créer un bouton 'ouvrir' et ca marche deja pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        handles(2)=uicontrol('style','pushbutton',...
        'units','normalized',...
        'position',[260 260 20 3],...
        'string','Ouvrir',...    
        'callback',@ouvririmage,...
        'tag','ouvrir');
    Et j'ai donc créer un pushbouton sous le.fig

  9. #9
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut

    "ça marche pas" n'est pas une information suffisante pour que l'on puisse t'aider (erreur ? comportement inadéquat ?...)
    A quoi ressemble la fonction ouvririmage ?

    Qu'entends-tu exactement par cette phrase :
    Et j'ai donc créer un pushbouton sous le.fig

  10. #10
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Points : 8
    Points
    8
    Par défaut
    Bon j'essaie de repartir du programme d'exemple du tutoriel!!!
    Pour essayer de mieux comprendre ce que je fais !!!

    En tout cas merci à vous

  11. #11
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Points : 8
    Points
    8
    Par défaut
    En reprenant le prog du tutoriel et l'exemple [Débutant] Aide pour une interface je m'en sors pas trop mal!
    Par contre j'ai un probleme car vous ditent dans ce forum là,d'utiliser la fonction guihandles, j'ai cherché ce que c'était: je comprends mais je ne vois pas où ca doit etre mis dans le code afin d'afficher l'image!?
    Merci

  12. #12
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Comme expliqué dans le tutoril Développement efficace des interfaces graphiques, GUIDATA et GUIHANDLES sert essentiellement à faire passer des informations entre différents fonctions. En aucun cas cela ne sert à afficher des images.
    Si tu as utilisé GUIDE pour créer ton GUI ces fonctions sont utilisées par défaut dans le fichier .m généré.

    Par contre si tu veux afficher une image dans un axe spécifique, tu as besoin de connaitre le HANDLE de l'axe à l'endroit où tu vas afficher ton image.

  13. #13
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Points : 8
    Points
    8
    Par défaut
    Voila mon handles(4) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    handles(4)=axes('units','pixels',...
        'position',[40 100 200 250],...
        'tag','image');
    Voila la fonction que je cherche à créer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function open_image(chemain,fichier)
     [fichier,chemin] = uigetfile({'*.jpg';'*.tif';'*.bmp';'*.*'},'Choose picture')
     img=imread(fullfile(chemin,fichier));
     axes(handles(4));
     imshow(img);
      end
    et Voila mon handles(2):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    handles(2)=uicontrol('style','pushbutton',...
        'units','pixels',...
        'position',[320 240 120 50],...
        'string','Open',...    
        'callback',@Open_image,...
        'tag','Open');

  14. #14
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Ca me parait un bon début.
    Il y a un problème avec ce code ?
    Si oui donne-nous le message d'erreur.

  15. #15
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Points : 8
    Points
    8
    Par défaut
    Je n'arrive pas à afficher l'image dans l'axe!!
    J'ai un programme qui fait une boucle : qui lit 2 images, les traite et après calcul la vitesse en pixels/sec de l'objet.
    Je voudrais faire afficher les 2 premieres images dans 2 axes puis les 2 images traités puis la vitesse.

    J'ai créer 2 fonctions une pour ouvrir les 2 images et l'autre pour les traiter.
    Etant donné que je veux ouvrir deux images je ne sais pas comment faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     function treatment (obg,event)
     
      for i=1:2
       img_name=['img_',num2str(i),'.png']
       rgb = imread(img_name);
    Entre je fais ce qu'il faut pour récupérer une image où je peux récupérer les parametres qui m'interesse : cette fonction marche!!!!
    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
     
     
    imshow(I, 'InitialMagnification', 'fit')
     
    hold on
    for k = 1:numel(s2)
       centroid = s2(k).Centroid;
       text(centroid(1), centroid(2), sprintf('%d', k));
    end
    t(i)=s(1)
    end
    centr=[t(1).Centroid;t(2).Centroid]
    area=[t(1).Area;t(2).Area]
     
    resI = 1;  % Resolution suivant les lignes
    resJ = 1;  % Resolution suivant les colonnes
     
    %
    % C1 =t(1).Centroid : centre dans l'image 1
    % C2 : centre dans l'image 2
    % 
     
    distance = norm((t(2).Centroid-t(1).Centroid).*[resI resJ]);
     
     
    hold off
    Maintenant, je ne sais pas quoi mettre dans la fonction
    function open_image(obg,event) pour ouvrir les 2 images dans deux axes

  16. #16
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Il y a un chapitre dans le tutoriel Gestion des images qui montre comment créer 2 images dans 2 axes différents : 3-B-1. L'objet Image
    Tu peux essayer de t'en inspirer.

  17. #17
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Points : 8
    Points
    8
    Par défaut
    D'acord je regarde ca merci!

    Par contre pourquoi si je fais juste une fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function open_image
     a=imread ('img_1.jpg');
     axes(handles(4));
     imshow (a);
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    handles(4)=axes('units','pixels',...
        'position',[70 230 150 150],...
        'tag','img');
    Ca me retourne ce message d'erreur :

    ??? Undefined function or method 'Open_image' for input
    arguments of type 'double'.

    ??? Error while evaluating uicontrol Callback

  18. #18
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Quand tu met la fonction avec le @ dans le callback d'un objet, il prend obligatoirement un certain nombre de paramètres en entrée (voir comment c'est fait quand on construit le GUI avec GUIDE).
    Pour pallier ce problème rapidement, si tu n'as pas besoin des variables d'entrées (a priori non), tu changes l'entête de ta fonction de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function open_image(varargin)
    Après je pense qu'il ne connaitra pas la variable handles (à moins que open_image ne soit une nested function), tu dois utiliser au choix (voir le tutoriel des interfaces graphiques) :
    • guidata/guihandles
    • get/setappdata
    • nested functions

  19. #19
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Points : 8
    Points
    8
    Par défaut
    Avec nested fonction ça fonctionne!!

    Je souhaite maintenant récupérer le périmetre et le centroid pour calculer la vitesse mais étant donner que ces propriétés sont récupérés dans les fonctions imbriquées, je ne sais pas comment les extraire afin de les afficher!!!
    Merci

  20. #20
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Pourquoi tu ne les affiches pas quand tu es dans la fonction imbriquée qui fait le calcul de ces variables ?
    Donc tu les affiches dans des objets (edit text ou text ou je ne sais pas ce que tu utilises) et après en-dehors de la fonction imbriquée tu récupères directement les valeurs avec la fonction get sur les handles de ces objets.

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/10/2010, 11h30
  2. Interface graphique pour administrer un annuaire LDAP???
    Par SnipCool dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 09/06/2005, 17h40
  3. Interface graphique pour utilisateur
    Par Missvan dans le forum PostgreSQL
    Réponses: 10
    Dernier message: 14/02/2005, 09h56
  4. [FEDORA] Interface graphique pour partager connexion
    Par booboo dans le forum RedHat / CentOS / Fedora
    Réponses: 2
    Dernier message: 15/06/2004, 13h14
  5. [Kylix] Interface graphique pour lognes de commande linux
    Par lecharcutierdelinux dans le forum EDI
    Réponses: 6
    Dernier message: 29/08/2003, 10h20

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