Probleme mit der Anzeige von bearbeiteten Bildern in einer GUI erstellt in MATLAB
-
12-09-2019 - |
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.
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)