2009-04-20 4 views
3

Ich habe eine Zuweisung zum Erstellen einer GUI mit MATLAB GUIDE und habe ein Problem mit der Anzeige eines bearbeiteten Bildes. Ich brauche Buttons, die das Bild bearbeiten (zB rote, blaue, grüne Komponenten entfernen und drehen) und das bearbeitete Bild anzeigen. Ich benutze imshow, um das bearbeitete Bild anzuzeigen, aber es wird in einem neuen Fenster angezeigt und beendet die GUI, die ich ausgeführt habe. Kann jemand helfen?Probleme mit der Anzeige von bearbeiteten Bildern in einer in MATLAB erstellten GUI

Ich habe daran gearbeitet und viele verschiedene Möglichkeiten versucht, das Problem zu beheben, aber keine funktionierte. Ich verwende jedoch MATLAB 7.0.1 und 7.7.0 könnte ein Update für dieses Problem haben.

+0

Die Links, die ich unten gab betreffen die neueste Version von MATLAB (2009a). Ich bin mir nicht sicher, wie viel sich seit v7.0.1 geändert hat, was zu diesem speziellen Problem gehört. Ich weiß, dass IMSHOW sich etwas anders verhalten hat, als ich es in v7.1 versus v7.7 lief. Wenn Sie Teile (nicht alle) Ihres Codes veröffentlichen könnten, könnten wir vielleicht mehr helfen. – gnovice

Antwort

4

Wenn Sie zuerst das Bild Grundstück mit imshow, haben sie ein Handle auf das Bildobjekt zurückgeben erstellt:

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

Dann das Bild mit den neuen Daten zu aktualisieren, gehen Sie wie folgt statt imshow wieder aufzurufen :

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

Mit dem set Befehl wird das Bildobjekt ändern Sie bereits erstellt (eine Liste von Bildobjekteigenschaften können here zu finden).

Alternativ können Sie auch zusätzliche Parameter zu einem Aufruf von imshow fügen Sie es zu sagen, welche Objektachsen in das Bild zu zeichnen:

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

EDIT:

Ihre zusätzliche Adressierung Problem beim Austausch von GUI-Daten zwischen Funktionen, sollten Sie die MATLAB-Dokumentation here überprüfen. Wie dort erwähnt, gibt es ein paar verschiedene Möglichkeiten, um Daten zwischen verschiedenen Funktionen in einer GUI zu übergeben: Verschachtelung Funktionen (erwähnt in SO here), mit der 'UserData' Eigenschaft von Objekten (erwähnt in SO here), oder mit den Funktionen setappdata/getappdata oder guidata. Die Option guidata ist möglicherweise am besten für GUIs geeignet, die in GUIDE erstellt wurden.

+0

Das Problem, das ich jetzt habe, ist, dass es nicht erkennt, dass es eine Variable "hImage" gibt. Ich denke, das ist, weil ich versuche, das Bild in einer anderen Funktion in der GUI zu bearbeiten. Wie kann ich die hImage Daten übertragen? – Phizunk

0

Die GUI m-Dateifunktionen weisen die Bilddaten automatisch einer Variablen namens hObject zu. Sobald Sie Ihr Bild Änderung vorgenommen haben, müssen Sie die neuen Daten zu hObject neu zuzuweisen:

hObject = imshow(newimagedata) 

Vergessen Sie nicht, zu aktualisieren und diese Operation sparen:

guidata(hObject, handles) 
Verwandte Themen