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 :

Points recouverts par image


Sujet :

Interfaces Graphiques

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 134
    Par défaut Points recouverts par image
    Bonjour,

    Dans un GUI que j'ai codé,
    j'ai positionné une Gui axes, dans laquelle, je voudrais y mettre une image et placer des points à l'aide de la souris.
    1er étape : je positionne les points par l'intermédiaire d'un plot, ok (ils s'affichent dans la gui axes).
    2eme étape : j'importe l'image ok (elle s'affiche dans la gui axes)


    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
    figure ('windowbuttondownfcn', @wbdfcn, ...
                'position', [ 100 100 500 500], ...
                'tag', 'interfaceJeu');
     
     
        uicontrol ( 'style', 'pushbutton', ...
                     'position', [ 20 20 120 30], ...
                     'string', 'Ouvrir', ...
                     'callback', @OuvrirFichier, ...
                     'tag', 'pb');
     
     
        axes (  'position', [ 0.2 0.2 0.5 0.5], ...
                   'tag', 'a');
     
     
        data = guihandles (gcf);
     
        data.vX = zeros(1,1);
        data.vY = zeros(1,1);
        data.nbPts = 0;    
        data.p = plot(  data.vX, data.vY, 'ro');
     
        xlim([0 1])
        ylim([0 1])
     
        guidata(gcf, data);   
     
     
        %%% callback %%%
    function OuvrirFichier (obj, event)
     
        data = guidata (gcbf);
     
        I = imread ('0001.bmp');
        image (I, 'parent', data.a);   
     
        guidata(gcbf, data);
     
     
    function wbdfcn (obj, event)
        data = guidata (gcbf);
     
        cp = get(gca, 'currentpoint');
        cp = cp(1,1:2);
     
    	data.nbPts = data.nbPts + 1;
    	data.vX(data.nbPts) = cp(1);
    	data.vY(data.nbPts) = cp(2);
    	set(data.p, 'xdata', data.vX, 'ydata', data.vY);
     
        guidata (gcbf, data);
    Problème : L'image supprime les points, et lorsque j'essaie de positionner à nouveau des points, j'ai le message d'erreur suivant :
    ??? Error using ==> set
    Invalid handle object.
    
    Error in ==> Testuide2>wbdfcn at 57
    set(data.p, 'xdata', data.vX, 'ydata', data.vY);
     
    ??? Error while evaluating figure WindowButtonDownFcn
    Est-ce que quelqu'un pourrait me dire comment faire en sorte que l'image soit toujours en dessous des points ?
    Et également, faire en sorte, que je puisse cliquer de nouveau des points ?

    Je vous remercie

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

    Comme lorsque tu veux superposer plusieurs plot, il faut utiliser hold on, ou rajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        axes (  'position', [ 0.2 0.2 0.5 0.5], ...
        'Nextplot','add',...
        'tag', 'a');
    qui a le même effet.
    Pour quelle soit en dessous des points, tu peux utiliser la fonction uistack.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 134
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    'Nextplot','add',...
    j'ai rajouté ce code, je peux rajouter des points, mais l'image que j'importe n'apparait plus correctement, (je l'ai mise en pièce jointe).
    C'est dû à quoi ?

    je ne vois pas comment utiliser la fonction uistack. Comment accéder à l'image de la gui axes. j'ai testé le code suivant pour savoir ce que comprenait la gui axes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    v = allchild(data.a) % data.a est la gui axe
    % ce qui me donne une suite de nombre
    Mais comment accéder à l'image pour la faire passer dessous 'down'ou au plot pour le faire passer dessus 'up' ?
    Images attachées Images attachées  

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par ArnaudFu13 Voir le message
    mais l'image que j'importe n'apparait plus correctement, (je l'ai mise en pièce jointe).
    C'est dû à quoi ?
    à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    xlim([0 1])
    ylim([0 1])
    Par défaut, la fonction image affiche l'image dans [0.5 M+0.5] [0.5 N+0.5] , M et N étant les dimensions de l'image.
    Selon ce que tu veux faire, tu peux utiliser les entrées image(x,y,....

    Citation Envoyé par ArnaudFu13 Voir le message
    Comment accéder à l'image de la gui axes.
    Encore la fonction image : handle = image(...)

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 134
    Par défaut
    Je vais régler les problèmes séparément. Ce sera plus simple . Parce que ca fait apparaître de nouveaux problèmes .

    J'aimerais donc faire cohabiter les points que je clique et mon image (avec les points par dessus l'image).
    J'ai fait comme tu m'as dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function OuvrirFichier (obj, event) 
        data = guidata (gcbf);   % meme si l'image ne se positionne plus correctement
        I = imread ('001.jpg');
        hImg = image (I, 'parent', data.a);
        uistack(hImg,'down');
        guidata(gcbf, data);
    Le problème c'est que ca ne marche qu'une seule fois.
    Si je demande à réafficher l'image, elle reste au premier plan.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Comme l'indique la documentation :
    Citation Envoyé par doc uistack
    'down' – moves h down one position in the stacking order
    Dans ton cas, 'bottom' serait plus de circonstance je pense.

    Par contre je présume que tu ne traiteras qu'une image à la fois, et voudras donc supprimer la précédente. Pour cela tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    delete( findobj(data.a,'type','image') )

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 134
    Par défaut
    Avec tes derniers conseils, ça fonctionne enfin .

    Je vais ouvrir d'autres discussion pour les questions qui découle de la superposition d'une image et de points dans une même gui axe

    Je te remercie.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/12/2006, 18h56
  2. submit remplacé par image
    Par oceane751 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 02/10/2006, 19h14
  3. le pixel noir le plus proche d'un point dans une image
    Par tlemcenvisit dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 28/03/2006, 09h44
  4. Créer une page par image ?
    Par Eliness dans le forum Langage
    Réponses: 10
    Dernier message: 01/01/2006, 18h34
  5. Mesure distance entre 2 points d'une image
    Par vexal dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/05/2005, 15h29

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