Problèmes avec l'affichage des images éditées dans une interface graphique créée en MATLAB

StackOverflow https://stackoverflow.com/questions/768510

Question

J'ai une mission de créer une interface graphique en utilisant Matlab GUIDE et je suis un problème avec l'affichage d'une image modifiée. Je dois avoir des boutons modifier l'image (par exemple. Supprimer des composants rouge, bleu, vert et pivotent) et afficher cette image modifiée. J'utilise imshow pour afficher l'image modifiée, mais il affiche dans une nouvelle fenêtre et ferme l'interface graphique que j'avais en cours d'exécution. Quelqu'un peut-il aider?

Je travaille sur ce sujet et ai essayé de nombreuses façons différentes de résoudre le problème, mais aucun travaillé. Cependant, je suis Matlab 7.0.1 et 7.7.0 pourrait avoir une mise à jour pour ce problème.

Était-ce utile?

La solution

Lorsque vous tracer l'image avec imshow , faites retourner une poignée à l'objet image, il crée:

A = (the initial matrix of image data);
hImage = imshow(A);

Ensuite, mettre à jour l'image avec de nouvelles données, effectuez les opérations suivantes au lieu d'appeler à nouveau imshow:

B = (modification of the original image matrix A);
set(hImage, 'CData', B);

En utilisant la commande set changera l'objet d'image que vous avez déjà créé (une liste des propriétés de l'objet d'image se trouve ).

Vous pouvez également ajouter des paramètres supplémentaires à un appel à imshow pour lui dire que les axes objet à tracer l'image:

hAxes = (the handle to an axes object);
imshow(A, 'Parent', hAxes);

EDIT:

Aborder le problème supplémentaire de partage de données de l'interface graphique entre les fonctions, vous devez consulter la documentation Matlab ici . Comme il a noté, il y a plusieurs façons de transmettre des données entre les différentes fonctions impliquées dans une interface graphique: fonctions d'imbrication (mentionnées sur href="https://stackoverflow.com/q/272511/52738"> SO ), en utilisant la propriété 'UserData' des objets (mentionnée sur href="https://stackoverflow.com/q/704391/52738"> SO ), ou en utilisant les fonctions setappdata / getappdata ou guidata . L'option guidata peut être préférable pour une utilisation avec des interfaces graphiques faites dans GUIDE.

Autres conseils

Les fonctions de fichier GUI m attribuer automatiquement les données d'image à une variable appelée hObject. Une fois que vous avez fait votre changement d'image, vous devez réattribuer les nouvelles données à hObject:

hObject = imshow(newimagedata)

Ne pas oublier de mettre à jour et enregistrer cette opération par:

guidata(hObject, handles)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top