AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Bildanalyse/-vergleich
Thema durchsuchen
Ansicht
Themen-Optionen

Bildanalyse/-vergleich

Ein Thema von Slashmob · begonnen am 8. Dez 2011 · letzter Beitrag vom 11. Dez 2011
Antwort Antwort
Seite 4 von 5   « Erste     234 5      
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#31

AW: Bildanalyse/-vergleich

  Alt 11. Dez 2011, 20:52
Wenn Du den Button mehrmals drücken willst musst Du Image 3 vorher wieder initialisieren wie das siehst Du im FormCreate.

 If (wert > schwellwert) and (Image3.Canvas.pixels[x,y] <> clRed) then
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Slashmob

Registriert seit: 28. Okt 2011
45 Beiträge
 
#32

AW: Bildanalyse/-vergleich

  Alt 11. Dez 2011, 21:40
Wenn Du den Button mehrmals drücken willst musst Du Image 3 vorher wieder initialisieren wie das siehst Du im FormCreate.

 If (wert > schwellwert) and (Image3.Canvas.pixels[x,y] <> clRed) then
Was genau soll ich im FormCreat sehen? Oder hab ich dich missverstanden?
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin

     b:=image1.width; h:=image1.height; // Breite und Höhe der Imagefelder
     image2.width:=b; image2.height:=h;
     image3.width:=b; image3.height:=h;
     image4.width:=b; image4.height:=h;

     image1.canvas.brush.color:=clblack; // Hintergrundfarben
     image2.canvas.brush.color:=clblack;
     image3.canvas.brush.color:=clblack;
     image4.canvas.brush.color:=clwhite;

     image1.canvas.fillrect(rect(0,0,b,h)); // Rechteck mit obigen Farben ausfüllen
     image2.canvas.fillrect(rect(0,0,b,h));
     image3.canvas.fillrect(rect(0,0,b,h));
     image4.canvas.fillrect(rect(0,0,b,h));

     image1.Picture.loadfromfile('1sw.bmp'); // Bilder hochladen
     image2.Picture.loadfromfile('pic2.bmp');

      form1.caption:= 'Bildanalyse-Suche nach Vergleichsschwankungen';
end;

Die If-Anweisung hab ich jetzt hier eingefügt, aber die roten Quadrate überlappen sich trotzdem noch:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Var

    farbe1, // Pixelfarbe im Image1
    farbe2, // Pixelfarbe im Image2
    wert, // Differenzwert
    schwellwert, // Schwellwert zum Vergleich
    x, // Laufindex in X-Richtung
    y, // Laufindex in Y-Richtung
    z // Zähler
        :integer;

begin
     schwellwert:=spinedit1.value; // Schwellwert
     z:=0; // Zähler auf Null gesetzt

     For x:=0 to b-1 do // Pixelweise Bilder auslesen
      Begin
           For y:=0 to h-1 do
               Begin
                    farbe1 := image1.canvas.pixels[x,y]; // Farbe merken und zuweisen
                    farbe2 := image2.canvas.pixels[x,y];
                    wert:= (farbe1 and clred)-(farbe2 and clred); // Differenzwert bilden (Rotmaske)

                    If (wert > schwellwert) and (Image3.Canvas.pixels[x,y] <> clRed) then // Differenzwert mit Schwellwert vergleichen
                      begin
                       inc(z); // Zähler hochzählen
                       AddFound(z,x,y,wert); // Daten in Stringgrid einfügen
                       quadratmalen(3,y,x,spinedit2.value,clred); // Quadrat malen
                       floodfill_(x,y,clred,clblack); // Quadrat ausfüllen

                       image4.canvas.pixels[x,y]:=clred;
                       image4.canvas.pixels[x,y]; // Im Image4 die Punkte markieren
                      end;
               end;

      end;


end;
Was hab ich falsch gemacht?
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#33

AW: Bildanalyse/-vergleich

  Alt 11. Dez 2011, 22:11
überlappen sich bei mehrmaligem drücken und geändertem Spinedit?
Delphi-Quellcode:
image3.canvas.brush.color:=clblack;
image3.canvas.fillrect(rect(0,0,b,h));
wenn Du mehrmals malen willst musst Du das Bild vorher wieder schwarz füllen ...
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Slashmob

Registriert seit: 28. Okt 2011
45 Beiträge
 
#34

AW: Bildanalyse/-vergleich

  Alt 11. Dez 2011, 22:17
Ja überlappen sich bei mehrmaligen Drücken des Buttons und Änderung des Schwellwerts(spinedit1.value).

Geändert von Slashmob (11. Dez 2011 um 22:34 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#35

AW: Bildanalyse/-vergleich

  Alt 11. Dez 2011, 22:20
Wenn Du nirgendwo die roten Dreiecke entfernst .....
initialisier doch mal Bild 3 beim Drücken von Button1 ....
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Slashmob

Registriert seit: 28. Okt 2011
45 Beiträge
 
#36

AW: Bildanalyse/-vergleich

  Alt 11. Dez 2011, 22:32
Mit initialisieren meinst du diesen Teil hier

Delphi-Quellcode:
image3.canvas.brush.color:=clblack;
image3.canvas.fillrect(rect(0,0,b,h));
vor die FOR-Schleifen zu setzen oder? Wenn nicht dann versteh ich nicht was genau du mit initialisieren meinst
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#37

AW: Bildanalyse/-vergleich

  Alt 11. Dez 2011, 22:33
genau
genau
und Du hast es schon verstanden ...
und wenn es bei b und h Probleme gibt einfach kurz nachdenken ...
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Slashmob

Registriert seit: 28. Okt 2011
45 Beiträge
 
#38

AW: Bildanalyse/-vergleich

  Alt 11. Dez 2011, 22:42
Mhm, überlappen sich trotzdem.
Bei b und h gibts keine Probleme (denk ich), da global deklariert, weiß nicht ob du darauf hinaus wolltest.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#39

AW: Bildanalyse/-vergleich

  Alt 11. Dez 2011, 23:00
Das Überlappen durch mehrmaliges Drücken sollte nicht mehr auftreten, Du musst allenfalls noch das Problem in den Griff bekommen wenn Du bei angenommener Schrittweite von 8 z.B. einen Punkt bei 10/10 und einen bei 15/15 hast
Du malst dann 6/6 > 14/14 und wieder bei 11/11 > 19/19 ob die Überlappung bei 11/11 > 14/14 unerwünscht ist kann ich nicht sagen, so wie ich die Definition der Aufgabe verstehe sollen nur Punkte innerhalb eines gefundenen Rechtecks ignoriert werden.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Slashmob

Registriert seit: 28. Okt 2011
45 Beiträge
 
#40

AW: Bildanalyse/-vergleich

  Alt 11. Dez 2011, 23:14
Wie es im moment aussieht mit der Überlappung ist im Bild zu sehen (im Anhang).
Normalerweise dürfte er ja wegen der IF-Anweisung in keinem roten Bereich ein neues Quadrat zeichnen. Tut er aber..

Achja noch was und wie schafft man es genauso viele Punkte im Image4( Weißes Bild) wie Quadrate im Image3 zu zeichnen? Kann ich das am schnellsten mit einer IF-Anweisung machen? Was muss ich hier dann vergleichen?

Dachte vielleicht an sowas wie If "soundsoviele Quadrate im Image3" Then image4.canvas.pixels[x,y];
Miniaturansicht angehängter Grafiken
t2uedja5.png  

Geändert von Slashmob (11. Dez 2011 um 23:17 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz