![]() |
AW: Bildanalyse/-vergleich
Zitat:
Hab versucht mit der ersten Schleife das erste Bild pixelweise auszulesen und mit der zweiten Schleife das zweite Bild. Liegt das vlt. daran, dass ich bei beiden die gleichen Variablen genommen hab? |
AW: Bildanalyse/-vergleich
Ich habe meinen letzten Beitrag editiert, schau noch einmal.
|
AW: Bildanalyse/-vergleich
DeddyH war wieder mal schneller, da ich es schon habe poste ich es trotzdem mal ...
BTW.: wenn Du es es optimieren willst steig von Pixels auf Scanline um, Beiträge hierzu liefert die Forensuche bis zum Abwinken Die bildest im Moment die Differenz nur für das letzte Pixel Deiner Schleifen, man könnte es so lösen
Delphi-Quellcode:
Zahlen müssen in Strings umgewandelt werden wenn Du sie in einem Stringgrid darstellen willst
var
i,j,z:Integer; begin z := 0; For i:=0 to image1.width - 1 do // Erstes Bild pixelweise auslesen Begin For j:=0 to image1.height -1 do Begin farbe1:= image1.canvas.pixels[i,j]; farbe2:= image2.canvas.pixels[i,j]; wert:= (farbe1 and clred)-(farbe2 and clred); // Differenzwert bilden inc(z); AddFound(z , i, j, wert); end; end;
Delphi-Quellcode:
procedure TForm1.AddFound(nr, x, y, wert :Integer);
begin if StringGrid1.Rowcount < (nr + 1) then StringGrid1.Rowcount := (nr + 1); StringGrid1.Cells[0, nr ] := IntToStr(Nr); StringGrid1.Cells[1, nr ] := IntToStr(x); StringGrid1.Cells[2, nr ] := IntToStr(y); StringGrid1.Cells[3, nr ] := IntToStr(wert); end; |
AW: Bildanalyse/-vergleich
Was mir gerade erst auffällt: ist Pixels nicht 0-indiziert?
|
AW: Bildanalyse/-vergleich
Doch ..... ich habe die Schleife ungeprüft kopiert und angepasst ...
|
AW: Bildanalyse/-vergleich
Zitat:
@Bummi: versuche grade deine Idee anzupassen, doch irgendwie bleibt der Differenzwert immer Null. Muss nochmal in den Code gucken... |
AW: Bildanalyse/-vergleich
Siehe Bummis geänderten Code: die Pixel nicht von 1 bis Width/Height vergleichen, sondern von 0 bis Width/Height - 1.
|
AW: Bildanalyse/-vergleich
Ich habe jetzt versucht den Code etwas anzupassen.
Ich brauch ja nur die Stellen wo es einen Unterschied der beiden Bildern mit dem Schwellwert gibt. Das heißt, es werden nicht mehr alle Pixel aufgelistet, sondern nur die, wo der (Differenz-)Wert > Schwellenwert. Das Problem ist, dass bei der Ausgabe auf dem Stringgrid der (Differenz-)Wert immer Null ist. Wo könnte der Fehler sein? @Bummi und DeddyH: An dieser Stelle mal ein Danke für eure geleistete Hilfe, Bemühungen und Tipps! :thumb:
Delphi-Quellcode:
procedure TForm1.Addfound (nr,x,y,wert:Integer);
Begin If stringgrid1.rowcount < (nr+1) then stringgrid1.rowcount:= nr+1; stringgrid1.cells[0,nr]:=inttostr(Nr); stringgrid1.cells[1,nr]:=inttostr(X); stringgrid1.cells[2,nr]:=inttostr(Y); stringgrid1.cells[3,nr]:=inttostr(Wert); stringgrid1.cells[0,0]:='Nr.'; stringgrid1.cells[1,0]:='X'; stringgrid1.cells[2,0]:='Y'; stringgrid1.cells[3,0]:='Diff-Wert'; end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Var farbe1, // Pixelfarbe im Image1 farbe2, // Pixelfarbe im Image2 wert, // Differenzwert schwellwert, // Schwellwert zum Vergleich x, // Laufindex y, // Laufindex z // Zähler :integer; begin b:=image1.width; h:=image1.height; // Breite und Höhe der Imagefelder image2.width:=b; image2.height:=h; schwellwert:=spinedit1.value; // Voreinstellung 10 z:=0; For x:=0 to b-1 do Begin For y:=0 to h-1 do Begin farbe1 := image1.canvas.pixels[x,y]; farbe2 := image2.canvas.pixels[x,y]; wert:= (farbe1 and clred)-(farbe2 and clred); If wert > schwellwert then inc(z); AddFound(z,x,y,wert); end; end; end; |
AW: Bildanalyse/-vergleich
Ah jetzt steht dort keine Null mehr. *freu* :-D
Vor dem IF stand kein Begin und end?!
Delphi-Quellcode:
begin
b:=image1.width; h:=image1.height; // Breite und Höhe der Imagefelder image2.width:=b; image2.height:=h; schwellwert:=spinedit1.value; // Voreinstellung 10 z:=0; For x:=0 to b-1 do Begin For y:=0 to h-1 do Begin farbe1 := image1.canvas.pixels[x,y]; farbe2 := image2.canvas.pixels[x,y]; wert:= (farbe1 and clred)-(farbe2 and clred); If wert > schwellwert then Begin inc(z); AddFound(z,x,y,wert); end; end; end; end; |
AW: Bildanalyse/-vergleich
sorry, lapsus:oops:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:45 Uhr. |
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