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.

È stato utile?

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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top