Delphi-PRAXiS
Seite 4 von 5   « Erste     234 5      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Bildanalyse/-vergleich (https://www.delphipraxis.net/164987-bildanalyse-vergleich.html)

Bummi 11. Dez 2011 20:52

AW: Bildanalyse/-vergleich
 
Wenn Du den Button mehrmals drücken willst musst Du Image 3 vorher wieder initialisieren wie das siehst Du im FormCreate.

Delphi-Quellcode:
 If (wert > schwellwert) and (Image3.Canvas.pixels[x,y] <> clRed) then

Slashmob 11. Dez 2011 21:40

AW: Bildanalyse/-vergleich
 
Zitat:

Zitat von Bummi (Beitrag 1140865)
Wenn Du den Button mehrmals drücken willst musst Du Image 3 vorher wieder initialisieren wie das siehst Du im FormCreate.

Delphi-Quellcode:
 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?

Bummi 11. Dez 2011 22:11

AW: Bildanalyse/-vergleich
 
ü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 ...

Slashmob 11. Dez 2011 22:17

AW: Bildanalyse/-vergleich
 
Ja überlappen sich bei mehrmaligen Drücken des Buttons und Änderung des Schwellwerts(spinedit1.value).

Bummi 11. Dez 2011 22:20

AW: Bildanalyse/-vergleich
 
Wenn Du nirgendwo die roten Dreiecke entfernst .....
initialisier doch mal Bild 3 beim Drücken von Button1 ....

Slashmob 11. Dez 2011 22:32

AW: Bildanalyse/-vergleich
 
Mit initialisieren meinst du diesen Teil hier

Zitat:

Zitat von Bummi (Beitrag 1140883)
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 :oops:

Bummi 11. Dez 2011 22:33

AW: Bildanalyse/-vergleich
 
genau
genau
und Du hast es schon verstanden ...
und wenn es bei b und h Probleme gibt einfach kurz nachdenken ...

Slashmob 11. Dez 2011 22:42

AW: Bildanalyse/-vergleich
 
Mhm, überlappen sich trotzdem.
Bei b und h gibts keine Probleme (denk ich), da global deklariert, weiß nicht ob du darauf hinaus wolltest.

Bummi 11. Dez 2011 23:00

AW: Bildanalyse/-vergleich
 
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.

Slashmob 11. Dez 2011 23:14

AW: Bildanalyse/-vergleich
 
Liste der Anhänge anzeigen (Anzahl: 1)
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];


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:52 Uhr.
Seite 4 von 5   « Erste     234 5      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz