WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Mit der Maus eine Gerade(zwei Punkte) in ein Bild zeichnen

 

Kathy

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2009, 12:15     Titel: Mit der Maus eine Gerade(zwei Punkte) in ein Bild zeichnen
  Antworten mit Zitat      
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?Wink
Freue mich über Antworten, danke:-)
Kathy


Maddy
Ehrenmitglied

Ehrenmitglied



Beiträge: 494
Anmeldedatum: 02.10.08
Wohnort: Greifswald
Version: ---
     Beitrag Verfasst am: 18.06.2009, 12:19     Titel:
  Antworten mit Zitat      
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! Smile


Edit: Habs mal kurz entworfen.

Code:


spy; % Besipiel Bild
a=ginput(2);
p=polyfit(a(:,1),a(:,2),1);
x=0:0.1:100;
y=polyval(p,x);

hold on
plot(x,y,'k') % Gerade durch die Punkte
plot(a(:,1),a(:,2),'r') % Strecke zwischen den Punkten

_________________

>> why
The computer did it.
Private Nachricht senden Benutzer-Profile anzeigen
 
Kathy

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2009, 14:21     Titel: Super!
  Antworten mit Zitat      
Wow, das ist ja super! Vielen Dank!! Dacht ich sitze da ewig dran..Smile
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?

Code:

clear all;
close all;
bild = imread('canoe.jpg');
imageview(bild);

hold on
a=ginput(2);
p=polyfit(a(:,1),a(:,2),1);
x=0:0.1:100;
y=polyval(p,x);

hold on
plot(x,y,'k') % Gerade durch die Punkte
plot(a(:,1),a(:,2),'r') % Strecke zwischen den Punkten
 
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 18.06.2009, 15:05     Titel:
  Antworten mit Zitat      
Moin,

da du keinen handle zu deinem Bild hast müsste es so gehen:
Code:
hold on,
plot(gca,x,y,'k') % Gerade durch die Punkte
plot(gca,a(:,1),a(:,2),'r') % Strecke zwischen den Punkten


Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Kathy

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2009, 15:17     Titel: mmh
  Antworten mit Zitat      
mmh, das geht bei mir leider gar nicht, kein Möglichkeit zum "klicken"
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 18.06.2009, 15:32     Titel:
  Antworten mit Zitat      
Die Aussage verstehe ich nicht... Gibts ne Fehlermeldung?
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Kathy

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2009, 15:35     Titel: nicht anders
  Antworten mit Zitat      
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...;-(
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 18.06.2009, 15:58     Titel:
  Antworten mit Zitat      
Fehler gefunden:
Code:
clear all;
close all;
bild = imread('rice.png');
imshow(bild); % hier muss es imshow heißen, da du sonst ein anderes GUI öffnest

a=ginput(2);
p=polyfit(a(:,1),a(:,2),1);
x=0:0.1:100;
y=polyval(p,x);

hold on
plot(x,y,'k') % Gerade durch die Punkte
plot(a(:,1),a(:,2),'r') % Strecke zwischen den Punkten


Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Kathy

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2009, 16:05     Titel: dankDir
  Antworten mit Zitat      
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: ---
     Beitrag Verfasst am: 18.06.2009, 16:07     Titel:
  Antworten mit Zitat      
Bekomme nämlich diese Fehlermeldung:

??? Undefined function or method 'imshow' for input arguments of type 'uint8'

Dabei hat imshow sonst bei mir funktioniert...
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 18.06.2009, 16:16     Titel:
  Antworten mit Zitat      
Hast du die Image Processing Toolbox?

Sonst versuche es mal mit
Code:


Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Kathy

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2009, 16:21     Titel: Begeistert:-)
  Antworten mit Zitat      
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.Smile)
 
stratist9011
Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 12.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.04.2013, 23:12     Titel:
  Antworten mit Zitat      
Hallo,

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 :

Code:
a=ginput(6);
p=polyfit(a(:,1),a(:,2),a(:,3),a(:,4),a(:,5),a(:,6),3);
x=0:0.1:100;
y=polyval(p,x);

hold on
plot(x,y,'k') % Gerade durch die Punkte
plot(a(:,1),a(:,2),a(:,3),a(:,4),a(:,5),a(:,6),'r') % Strecke zwischen den Punkten


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ß
Private Nachricht senden Benutzer-Profile anzeigen
 
stratist9011
Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 12.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2013, 15:26     Titel:
  Antworten mit Zitat      
Habe das Problem jetzt soweit gelöst ... ich schreibe hier mal meinen Code vielleicht kann das nochmal jemand gebrauchen ...

Code:
clear all;
close all;
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);

%% Regionen und deren Mittelpunkt suchen

E = bwlabel(D);                                 % Matrix labeln
 stats = regionprops(E,'Centroid','Extent');    % nach Zentren suchen
figure,
imshow(E);
 stats = regionprops(E,'BoundingBox','Extent'); % nach Recktecken suchen
figure,
imshow(E);

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


Im Anhang ist noch das Bild was man dann erhält ...

Geraden.jpg
 Beschreibung:

Download
 Dateiname:  Geraden.jpg
 Dateigröße:  28.96 KB
 Heruntergeladen:  1123 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.