I problemi con la visualizzazione di immagini modificate in una GUI creata in MATLAB
-
12-09-2019 - |
Domanda
Ho un incarico di creare una GUI con MATLAB guida e sto avendo un problema con la visualizzazione di un'immagine modificata. Ho bisogno di avere pulsanti che modificare l'immagine (ad es. Togliere rosso, blu, verde e componenti ruotano) e visualizzare quella immagine modificata. Sto usando imshow
per visualizzare l'immagine modificata ma visualizza in una nuova finestra e si spegne l'interfaccia grafica che avevo in esecuzione. Chiunque può aiutare?
Ho lavorato su questo e ho provato numerosi modi diversi di risolvere il problema, ma nessuno ha lavorato. Tuttavia, io sto usando MATLAB 7.0.1, 7.7.0 e potrebbe avere un aggiornamento per questo problema.
Soluzione
Quando si stampa prima l'immagine con imshow
, averlo restituire un handle all'oggetto immagine crea:
A = (the initial matrix of image data);
hImage = imshow(A);
Poi, per aggiornare l'immagine con nuovi dati, provare quanto segue invece di chiamare di nuovo imshow
:
B = (modification of the original image matrix A);
set(hImage, 'CData', B);
Con il comando set
cambierà l'oggetto immagine che già creato (un elenco delle proprietà dell'oggetto immagine può essere trovato qui ).
In alternativa, è anche possibile aggiungere ulteriori parametri per una chiamata a imshow
per dirgli quali assi oggetto per tracciare l'immagine:
hAxes = (the handle to an axes object);
imshow(A, 'Parent', hAxes);
Modifica
Affrontare il problema aggiuntivo di condivisione dei dati tra le funzioni GUI, si dovrebbe verificare la documentazione MATLAB qui . Come notato lì, ci sono diversi modi per passare i dati tra le diverse funzioni coinvolte in una GUI: funzioni di nidificazione (indicate su SO qui ), utilizzando la proprietà degli oggetti del 'UserData' (citato su SO qui ), o utilizzando le funzioni setappdata
/ getappdata
o guidata
. L'opzione guidata
può essere meglio per l'uso con GUI realizzati in GUIDE.
Altri suggerimenti
Le funzioni di file GUI m assegnano automaticamente i dati delle immagini ad un hObject
variabile chiamata. Una volta che avete fatto il vostro alterazione dell'immagine, è necessario riassegnare i nuovi dati hObject
:
hObject = imshow(newimagedata)
Non dimenticare di aggiornare e salvare questa operazione:
guidata(hObject, handles)