Thema: Delphi Bilder abgleichen

Einzelnen Beitrag anzeigen

Mooshead

Registriert seit: 27. Jul 2007
32 Beiträge
 
#1

Bilder abgleichen

  Alt 16. Apr 2008, 20:07
Hallo,

ich hab einen Algorithmus zum Abgleichen von Bildern.
Wenn ein Unterschied (genügend groß) festgestellt wird, dann wird auf einem neuen Bild ein schwarzer Punkt erzeugt.
Da es sich um recht viele Bilder handelt und ich Pixel für Pixel abgleiche wollte ich fragen ob es nicht eine schnellere Möglichkeit gibt. Z.B. mit einem Zeiger die Farben der Pixel direkt aus dem Speicher lesen o.ä. weiß aber nicht genau wie das gehen soll.

Vielen Danke für Eure Hilfe


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Bild1,Bild2 : TPicture;
    i,x,y : integer;
    Bitmap : TBitmap;
    A : array[0..639,0..479] of integer;
begin
  Bild1 := TPicture.Create;
  Bild1.LoadFromFile('0.jpg');
  for x:= 0 to 639 do
    for y:= 0 to 479 do
      A[x,y]:=ColorToRGB(Pi.Bitmap.Canvas.Pixels[x,y]);
  bild1.Free;

  for i:=1 to 1000 do begin
    Bild2 := TPicture.Create;
    Bitmap := TBitmap.Create;
    Bild2.LoadFromFile(IntToStr(i)+'.jpg');
    Bitmap.Width:=640;
    Bitmap.Height:=480;

    for x:= 0 to 639 do
      for y:= 0 to 479 do begin
        diff:=ColorToRGB(B.Bitmap.Canvas.Pixels[x,y])-A[x,y];
        if diff<0 then diff :=-diff;
        if diff>1000000 then
          Bitmap.Canvas.Pixels[x,y]:=clblack;
      end;
    Bitmap.SaveToFile('B'+IntToStr(i)+'.bmp');
    Bitmap.Free;
    Bild2.Free;
  end;
end;
  Mit Zitat antworten Zitat