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;