Einzelnen Beitrag anzeigen

winx

Registriert seit: 14. Jun 2005
265 Beiträge
 
#8

Re: Kamerabilder vergleichen und nur bei "Bewegung"

  Alt 11. Mai 2008, 12:59
Hi,

also ich habe jetzt den Code versucht:

Delphi-Quellcode:
type
  PRGBTripleArray = ^TRGBTripleArray;
  TRGBTripleArray = array [0..50000000] of TRGBTriple;

function CompareImages(Image1,Image2:TBitmap):Int64;
var x,y:integer;
    P1,P2:PRGBTripleArray;
    summe1,summe2:integer;
begin
result := 0;
summe1 := 0;
summe2 := 0;
Image1.PixelFormat := pf24bit;
Image2.PixelFormat := pf24bit;

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

    P1 := Image1.ScanLine[y];
    P2 := Image2.ScanLine[y];
      if not CompareMem(p1,p2,Image1.Width*SizeOf(TRGBTriple)) then
        begin
          for x := 0 to Image1.Width-1 do
            begin
              inc(summe1,RGB(P1[x].rgbtRed,P1[x].rgbtGreen,P1[x].rgbtBlue));
              inc(summe2,RGB(P2[x].rgbtRed,P2[x].rgbtGreen,P2[x].rgbtBlue));
              if summe1 <> summe2 then
                begin
                  summe1 := 0;
                  summe2 := 0;
                  inc(result);
                end;
            end;
        end;
  end;
Application.ProcessMessages;
end;

Leider bekomme ich sogar bei Bildern ohne jegliche
Bewegung (also immer identisch) Werte von 280.000.

Woran kann das liegen?

Werde jetzt mal die Alpha Werte mit einbinden...

gruß
  Mit Zitat antworten Zitat