Einzelnen Beitrag anzeigen

meisteralex

Registriert seit: 22. Nov 2005
173 Beiträge
 
#11

Re: Nur prüfen ob Bilder unterschiedlich sind

  Alt 22. Dez 2005, 16:00
hab das ganze nochmal nachgeproggt und festgestellt, dass die scanline-methode doch rasent schnell ist, wenn man nur die rgb-quads vergleicht.

also wenn ich den code weglasse, der einen gleichen pixel makiert (mit einem definiertem farbton versieht) brauch mein programm nur ca 10-20 ms anstatt 200 ms . kann das sein das das soviel zeit kostet oder hab ich mich verproggt *g*

hier mein code:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
bitm1,bitm2:tbitmap;
start,ende,x,y,i,countfalsepixel:integer;
p,p2:PRGBQuad;
begin
bitm1 := tbitmap.Create;
bitm2 := tbitmap.Create;

bitm1.LoadFromFile('C:\bild1.bmp');
bitm2.LoadFromFile('C:\bild2.bmp');
 bitm1.PixelFormat := pf32bit;
 bitm2.PixelFormat := pf32bit;


start:= gettickcount;
for i:=1 to 1000 do
countfalsepixel:=0;
begin

for y := 0 to bitm1.Height - 1 do
  begin

    P := bitm1.ScanLine[y];
    P2 := bitm2.ScanLine[y];

  for x := 0 to bitm1.Width - 1 do
    begin

      if RGB(P^.rgbRed, P^.rgbGreen, P^.rgbBlue) <> RGB(P2^.rgbRed, P2^.rgbGreen, P2^.rgbBlue) then Inc(CountFalsePixel);

      Inc(P);
      Inc(P2);

    end;


  end;
end;

 ende := gettickcount;
bitm1.Free;
bitm2.Free;


  showmessage('falsche pixel:'+inttostr(countfalsepixel)+' in ms:'+inttostr(ende-start));
end;
  Mit Zitat antworten Zitat