't' ce n'est rien. Je mets directement uicontrol
HandleDelobjet je ne sais pas ce que c'est.
La premiere ligne pour centr est fausse je dois garder que la 2eme
Et ce qui ne s'affiche pas sur l'interface mais dans matlab c'est la matrice centr
't' ce n'est rien. Je mets directement uicontrol
HandleDelobjet je ne sais pas ce que c'est.
La premiere ligne pour centr est fausse je dois garder que la 2eme
Et ce qui ne s'affiche pas sur l'interface mais dans matlab c'est la matrice centr
Je crois que tu devrais commencer par écouter le conseil de Caro
Commence par développer une interface plus simple plutôt que de directement t'attaquer à ton vrai problème.
Parce que cette discussion ne mène à rien, faute d'explications claires de ta part et de réponses précises de la nôtre![]()
Bonjour,
1 et 2 - Je crois que t et HandleDelobjet sont finalement la même chose ce qui voudrais dire que ta ligne :n'a pas l'air très utile puisque tu fais sensiblement la même chose juste en dessous (enfin je crois).
Code : Sélectionner tout - Visualiser dans une fenêtre à part set(handleDeLobjet,'String',centr);
3 - Dans ce cas, tu devrais la supprimer, ca simplifierait ton code.
4 - centr s'affiche sur l'interface car tu n'as pas mis de ';' à la fin de ton calcul et je pense que ca irais peut-être mieux (à valider) si tu faisais :
Voilà, j'espère que j'ai pu t'aider,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 t=uicontrol(gcf,... 'style','text',... 'position', [10 10 150 120],... 'string', num2str(centr));
Bon courage,
Duf
Merci pour votre aide.
La matrice 'centr' ne s'affiche pas sur l'interface et matlab m'affiche lerreur suivante :
t =
Area: 6163
Centroid: [261 97]
??? Undefined function or variable 'centr'.
Error in ==> essai2>image1 at 116
t=uicontrol(gcf,...
??? Error while evaluating uicontrol Callback
La MatLab te dis qu'il ne connait pas la variable 'centr', ce qui est fortement étrange vu que tu la calcules juste au dessus. Tu es sur qu'il n'y a pas un 'clear' ou que tu changes pas de fonction entre deux? Dans ce cas il faut juste lui transmettre la variable 'centr' et ca devrait fonctionner...
Duf
grâce à votre aide j'arrive maintenant à afficher les centroid sur l'interface.
Maintenant je souhaiterais récupérer les 2 valeurs des centroid dans les 2 fonctions et les utiliser dans une troisieme fonction. Comment puis-je faire pour récupérer ces valeurs??
il faut que tu declares les deux variables centroides comme variables globales ( pour étre connues dans les trois fonctions)
ex : au lieu de nommer tes variable cenroide1 centroide2 il faut les renommer handles.centroide1 et handles.cenroide2, en suite tu peux les appler ou tu veux dans tes fonctions.
Ce n'est pas la meilleure solution => Développement efficace des interfaces graphiques
Si je déclare mes variables au départ :
Après je déclare tous mes handles.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5function gui_nested_func t=0; centroid_1=0; centroid_2=0;
Puis j'entre dans la premiere fonction qui me récupère et m'affiche centroid_1
Puis pareil pour la deuxieme fonction où je récupère la valeur de centroid_2
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 axes (handles(7)); imshow(I, 'InitialMagnification', 'fit') hold on for k = 1:numel(s2) centroid_1 = s2(k).Centroid; end hold off t=s(1); a=uicontrol(gcf,... 'style','text',... 'position', [560 490 100 20],... 'string',num2str(centroid_1)); end
Et enfin avec la fonction 'speed' je voudrais aficher la valeur de 'distance' :
Mais ca m'affiche l'erreur suivante et ne me retourne pas la valeur de 'distance' :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 function speed %(obg,event) resI = 1; % Resolution suivant les lignes resJ = 1; % Resolution suivant les colonnes distance = norm((t.Centroid_1-t.Centroid_2).*[resI resJ]); a=uicontrol(gcf,... 'style','text',... 'position', [560 390 100 300],... 'string',num2str(distance)); end;
??? Error using ==> essai2>speed
Too many input arguments.
??? Error while evaluating uicontrol Callback
Enlève le % là :=>
Code : Sélectionner tout - Visualiser dans une fenêtre à part function speed %(obg,event)varargin c'est pour ne pas se compliquer la vie vu que tu n'utilises de toute façon pas les entrées par défaut de speed.
Code : Sélectionner tout - Visualiser dans une fenêtre à part function speed(varagin)
Je viens d'essayer et rien ne s'affiche sur l'interface et matlab me renvoie la meme erreur et lorsque je tape 'distance' dans matlab il me dit variable indéfinie
Pardon, erreur de typo (mais tu aurais pu aussi trouver par toi-même) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part function speed(varargin)
C'est vrai j'aurais pu le voir désolé!
Matlab me retourne ca :
Alors que j'ai declaré centroid_1 et centroid_2 en variables globales
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 ??? Reference to non-existent field 'Centroid_1'. Error in ==> essai2>speed at 185 distance = norm((t.Centroid_1-t.Centroid_2).*[resI resJ]); ??? Error while evaluating uicontrol Callback
Essaye de comprendre le message d'erreur.
Il te dit qu'il ne connait pas de champ nommé Centroid_1.
Cela fait référence à une structure; en l'occurence ici la structure t (tu sais la variable t : je t'avais demandé ce que c'était et tu avais dit qu'elle ne servait à rien)
Il y a donc une différence entre t.Centroid_1 et centroid_1 : ce ne sont pas les mêmes variables.
Je c'est bien mais pour calculer la valeur' distance' je la calcul comme étant l'hypoténuse et vous m'aviez donné ca avec t qui correspond au contour 1 soit t=s(1)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager