Thema: Delphi Bildanalyse/-vergleich

Einzelnen Beitrag anzeigen

Slashmob

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

AW: Bildanalyse/-vergleich

  Alt 9. Dez 2011, 19:34
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!

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;
  Mit Zitat antworten Zitat