Problèmes avec l'affichage des images éditées dans une interface graphique créée en MATLAB
-
12-09-2019 - |
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.
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)