Verfasst am: 06.09.2007, 10:07
Titel: Bild einlesen und anzeigen lassen
Hallo zusammen,
ich fange grade an mich ein bisschen in die GUI-Programmierung einzuarbeiten und habe schon ein kleines Problem:
Ich möchte ein Bild einlesen und anzeigen lassen.
Dazu habe ich mir axes definiert
Code:
% Axes for Original Image
axes_img_org = axes('Visible','on',...
'Units','Pixels',...
'Position',[685,490,590,420]);
Ich habs hinbekommen
Ich habe jetzt den Variablennamen auf 'p.axes_org_img' geändert und damit dem Vektor p zugeordnet. Damit funktioniert die Übergabe an die Funktion.
Code:
% Axes for Original Image
p.axes_img_org = axes('Visible','on',...
'Units','Pixels',...
'Position',[685,490,590,420]);
Ich habe hier doch nochmal eine Frage zu:
Ich habe ein GUI geschrieben, in der ich drei Axes definiere. Im ersten soll das Orginal-Bild dargestellt werden (klappt), im zweiten soll ein Histogramm ausgegeben werden (klappt auch), im dritten soll ein weiteres Bild ausgegeben werden, welches sich aus dem Orginalbild ergibt (klappt nicht wirklich).
Das Histogramm und das 2. Bild werden in einer separaten Funktion berechnet und übergeben.
Das Histogramm wird auch an die Stelle gesetzt, wo ich es haben will, das 2. Bild wird allerdings in einer separaten figure geöffnet und das GUI gleichzeitig geschlossen.
Hier die zugehörigen Code-Auszüge:
1. Axes-Definition:
Code:
% Axes for Hisogram
p.axes_hist = axes('Visible','on',...
'Units','Pixels',...
'Position',[685,25,590,420]);
% Axes for outlined grayscaled image
p.axes_out = axes('Visible','on',...
'Units','Pixels',...
'Position',[25,25,590,420]);
Ich gehe mal davon aus, das ihr mit meiner Frage nichts anfangen könnt.
Darum stelle ich hier mal das Paket zur Verfügung.
Als Image '1.jpg' laden und als Blank '2.jpg'.
nur mal als Zeichen, dass deine Frage nicht übersehen wird: Ich kann das GUI leider nicht ausführen, weil mir (hier, morgen geht's vielleicht) Funktionen wie imshow und rgb2gray fehlen. Wenn ich die Zeichenbefehle durch irgendwelche anderen ersetze ("surf(peaks)", was immer geht), kann ich den Fehler nicht reproduzieren, also das dritte Bild wird richtig in der axes p.axes_out erzeugt, das GUI bleibt geöffnet.
Ich versuch's morgen noch mal mit deinem GUI.
BTW (Achtung Besserwisserei!): Sowas wie
Code:
[x,y] = size(hist_neg);
k = 0;
for i=1:x
for j=1:y
if BW(i,j) == 1
k = k+1;
thresh(k) = hist_neg(i,j);
end end end
ich konnte den Fehler jetzt reproduzieren und eingrenzen. Es liegt definitiv an imhist. Dabei geht irgendetwas mit den axes kaputt. Man sieht es auch daran, dass danach der Hintergrund des ganzen GUIs weiß ist, nicht nur in der p.axes_hist. Ich schau mir jetzt noch das imhist.m genauer an. Vielleicht finde ich ja was.
Also gut, wenn Du Dich traust, im imhist.m herumzupfuschen, kann ich folgendes anbieten (Du kannst die geänderte Funktion auch unter "myimhist.m" speichern und dann anstelle von imhist aufrufen):
Um die Farbskala unter dem Histogramm richtig anzugeben, ergänzt man in Zeile 127 'Units','pixels', also
Hallo zusammen,
die beiden oben genannten Tipps habe ich nun endlich umsetzen wollen, musste aber dabei feststellen, dass ich wenn ich die imhist.m editiere und als myimhist.m in meinem Arbeitsordner abspeichere, der Aufruf der Fkt. myimhist.m zum komplett Absturz von Matlab führt.
Ich arbeite hier mit einer Netzwerk-basierten Matlab-Version. Ich vermute ich mal, dass die neue Fkt. myimhist.m in den Original-Ordner (wo sich auch imhist.m befindet) abspeichern muss, oder?
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.