Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Bilder abgleichen (https://www.delphipraxis.net/112207-bilder-abgleichen.html)

Mooshead 16. Apr 2008 20:07


Bilder abgleichen
 
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;

sakura 17. Apr 2008 10:54

Re: Bilder abgleichen
 
Der Trick besteht darin Hier im Forum suchenScanLine anstatt Pixels zu nutzen, da Du damit den Rechenaufwand extrem minimierst.

...:cat:...


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:17 Uhr.

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