3 Stimmen

Probleme bei der Anzeige von bearbeiteten Bildern in einer in MATLAB erstellten GUI

Ich habe eine Aufgabe zur Erstellung einer grafischen Benutzeroberfläche mit MATLAB GUIDE und habe ein Problem mit der Anzeige eines bearbeiteten Bildes. Ich benötige Schaltflächen, die das Bild bearbeiten (z.B. rote, blaue und grüne Komponenten entfernen und drehen) und das bearbeitete Bild anzeigen. Ich verwende imshow um das bearbeitete Bild anzuzeigen, aber es wird in einem neuen Fenster angezeigt und die GUI, die ich laufen hatte, wird heruntergefahren. Kann mir jemand helfen?

Ich habe an diesem Problem gearbeitet und viele verschiedene Möglichkeiten ausprobiert, um es zu beheben, aber keine hat funktioniert. Ich verwende jedoch MATLAB 7.0.1, und für 7.7.0 gibt es möglicherweise ein Update für dieses Problem.

0 Stimmen

Die Links, die ich unten angegeben habe, beziehen sich auf die neueste Version von MATLAB (2009a). Ich bin nicht sicher, wie viel sich seit Version 7.0.1 in Bezug auf dieses spezielle Problem geändert hat. Ich weiß, dass IMSHOW sich etwas anders verhielt, als ich es in v7.1 im Vergleich zu v7.7 ausgeführt habe. Wenn Sie Teile (nicht den ganzen) Ihres Codes posten könnten, könnten wir vielleicht mehr helfen.

4voto

gnovice Punkte 124264

Wenn Sie das Bild zum ersten Mal mit imshow ein Handle auf das erstellte Bildobjekt zurückgeben lassen:

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

Um dann das Bild mit neuen Daten zu aktualisieren, versuchen Sie Folgendes, anstatt den Aufruf imshow wieder:

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

Die Verwendung des set ändert das Bildobjekt, das Sie bereits erstellt haben (eine Liste der Eigenschaften von Bildobjekten finden Sie unter aquí ).

Alternativ dazu können Sie auch zusätzliche Parameter zu einem Aufruf von imshow um dem Programm mitzuteilen, in welchem Achsenobjekt das Bild dargestellt werden soll:

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

EDITAR:

Um Ihr zusätzliches Problem der gemeinsamen Nutzung von GUI-Daten zwischen Funktionen zu lösen, sollten Sie sich die MATLAB-Dokumentation ansehen aquí . Wie bereits erwähnt, gibt es verschiedene Möglichkeiten, Daten zwischen den verschiedenen Funktionen einer grafischen Benutzeroberfläche zu übergeben: Verschachtelung von Funktionen (siehe SO aquí ), die Verwendung der Eigenschaft "UserData" von Objekten (erwähnt auf SO aquí ), oder mit den Funktionen setappdata / getappdata o guidata . Die guidata Option eignet sich am besten für die Verwendung mit GUIDE erstellten GUIs.

0 Stimmen

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

0voto

Die Funktionen der GUI m-Datei weisen die Bilddaten automatisch einer Variablen namens hObject . Nachdem Sie Ihre Bildänderung vorgenommen haben, müssen Sie die neuen Daten wieder an hObject :

hObject = imshow(newimagedata)

Vergessen Sie nicht, diesen Vorgang zu aktualisieren und zu speichern:

guidata(hObject, handles)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X