Mit der Maus eine Gerade(zwei Punkte) in ein Bild zeichnen
Kathy
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 18.06.2009, 12:15
Titel: Mit der Maus eine Gerade(zwei Punkte) in ein Bild zeichnen
Hallo,
ich würde gerne wissen, ob jemand weiß, ob folgendes mit MATLAB überhaupt möglich ist:
Ich habe ein Bild (z.B. png), möchte es aufrufen und dann zwei Punkt in dem Bild markieren (als Nutzer mit dem Mauszeiger in das Bild klicken) und schließlich sollen diese beiden Punkte durch eine Gerade verbunden werden.
Die Frage ist jetzt, ist es mit MATLAB möglich soetwas zu tun, und hat dann vllt. auch noch jemand eine passende Funktion?
Freue mich über Antworten, danke:-)
Kathy
Also das sollte an sich kein Problem sein. Punkte im Bild kannst du mittels ginput abfragen, dass ganze zwei Mal und du hast die Punkte der Geraden. Dann musst du nur noch aus den beiden Punkten die Gerade bestimmen (selber einsetzen in die entsprechend umgeformte Geradengleichung) bzw. bestimmen lassen (mittels polyfit). Das ganze Zeichnen. Fertig!
Wow, das ist ja super! Vielen Dank!! Dacht ich sitze da ewig dran..
Allerdings habe ich noch ein Problem damit, das die Punkte in einem vorhandenen, aufgerufenen Bild setzen kann. Selbst mit hold on öffnet er mir immer wieder eine neue figure.... Oder mach ich da was komplett falsch?
Verfasst am: 18.06.2009, 15:35
Titel: nicht anders
Sorry;-)
Also, muss nen bisschen zurückrudern: mit Deiner Idee passiert schon was, aber nichts anderes als mit der davor auch. Das Bild öffnet sich, dann öffnet sich eine figure mit einem koordiantensystem und ich kann dort zwei punkte anklicken und es bildet sich eine gerade... Aber eben nicht in dem Bild, in dem ich das möchte...;-(
Ich danke Dir, auch wenn es bei mir gerade nicht klappt, weil ich seit heute mittag Probleme mit dem imshow habe, aber dad wird schon noch. (Sonst meld ich mich nochmal;-))
Vielen Dank und schönen Tag noch:-)
Kathy
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 18.06.2009, 16:07
Titel:
Bekomme nämlich diese Fehlermeldung:
??? Undefined function or method 'imshow' for input arguments of type 'uint8'
yep, image klappt. (hab die toolbox nicht, aber hatte mirdie entsprechenden Codes geholt, hat bisher geklappt, naja, was solls)
Bin auf jedenfall begeistert, jetzt kann ich damit super weiterarbeiten, und muss keine andere Software suchen. Supi.)
habe seit Tage nach genau so etwas gesucht. Funktioniert auch wie hier beschrieben für 2 Punkte wunderbar, allerdings will ich 6 Punkte auswählen und eine Polynomkurve 3 Grades erzeugen.
Hier mal mein Code :
Ich komme soweit das ich mit dem curser Punkte auswählen kann, doch nachdem ich den zweiten Punkt ausgewählt habe kriege ich von Matlab folgende Fehlermeldung :
Attempted to access a(:,3); index out of bounds because size(a)=[6,2].
Was mache ich falsch ? Für Hilfe wäre ich dankbar ....
Gruß
Habe das Problem jetzt soweit gelöst ... ich schreibe hier mal meinen Code vielleicht kann das nochmal jemand gebrauchen ...
Code:
clearall;
closeall;
Test=imread('Wasser_2.jpg'); % Bild einlesen hold on
imshow(Test);
hold off
A=double(Test);
B=rgb2gray(A); % Graubild erstellen
C=imadjust(B,[0;1],[0;1]); % Kontrast von X erhöhen
C(C>10)=255; % Alle Werte oberhalb 30 auf 255 setzen
imcontour(C); % Sucht Kontur im Bild und plotted diese
C = imclearborder(C,4);
D = imfill(C,'holes'); % Löcher füllen figure,
imshow(D);
s = regionprops(E, 'centroid'); % Punkte in Rechtecken markieren
centroids = cat(1, s.Centroid);
imshow(E) hold on
plot(centroids(:,1), centroids(:,2), 'b*') hold off
hold on
figure,
plot(centroids(:,1), centroids(:,2),'b*');
axis ij % legt Koordinatenursprung fest hold off
%% Punkte auswählen und Gerade plotten
[x1,y1]=ginput(6); % Punkte für 1. Gerade auswählen
p1=polyfit(x1,y1,1); % Linearisieren
y1=polyval(p1,x1);
hold on
plot(x1,y1,'k')% Gerade plotten
[x2,y2]=ginput(6); % Punkte für 2. Gerade auswählen
p2=polyfit(x2,y2,1); % Linearisierung
y2=polyval(p2,x2);
plot(x2,y2,'k')% Gerade plotten hold off
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.