Frage

Ich habe einen Auftrag ein GUI mit MATLAB GUIDE zu erstellen und ein Problem habe mit einer bearbeiteten Bild angezeigt wird. Ich brauche Tasten haben, um das Bild bearbeiten (z. B. entfernen rot, blau, grün Komponenten und drehen) und zeigen, dass die bearbeitete Bild. Ich verwende imshow das bearbeitete Bild angezeigt werden, aber es zeigt in einem neuen Fenster und schaltet die GUI Ich hatte ausgeführt. Kann mir jemand helfen?

Ich habe daran gearbeitet und haben zahlreiche verschiedene Möglichkeiten, das Problem zu lösen, aber keiner arbeitete versucht. Aber ich bin mit MATLAB 7.0.1 und 7.7.0 könnte ein Update für dieses Problem hat.

War es hilfreich?

Lösung

Wenn Sie zuerst das Bild Grundstück mit imshow , hat es Rück ein Handle auf das Bildobjekt erstellt es:

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

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

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

Mit dem set Befehl wird das Bild ändern Objekt, das Sie bereits erstellt (eine Liste von Bildobjekteigenschaften können hier werden ).

Alternativ können Sie auch zusätzliche Parameter in einen Anruf imshow ihm zu sagen, welchen Objektachsen um das Bild zu zeichnen in:

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

EDIT:

Addressing Ihr zusätzliches Problem von GUI-Daten zwischen Funktionen teilen, sollten Sie die MATLAB-Dokumentation überprüfen hier . Wie dort erwähnt, gibt es ein paar verschiedene Möglichkeiten, um Daten zwischen den verschiedenen Funktionen in einer GUI beteiligt weitergeben müssen: Verschachtelung Funktionen (erwähnt auf SO hier ), den 'Userdata' Eigenschaft von Objekten mit (auf SO hier genannt) oder mit den Funktionen setappdata / getappdata oder guidata . Die guidata Option kann in GUIDE gemacht GUIs für den Einsatz am besten.

Andere Tipps

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

hObject = imshow(newimagedata)

Vergessen Sie nicht, zu aktualisieren und diese Operation zu speichern, indem Sie:

guidata(hObject, handles)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top