Thema: Delphi zwei Bitmaps vergleichen

Einzelnen Beitrag anzeigen

Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#1

zwei Bitmaps vergleichen

  Alt 1. Feb 2010, 13:00
Hallo,
ich hatte so eine ähnliche Frage schon mal gestellt, allerdings bin ich bei der Umsetzung damals gescheitert.
Ich habe vor zwei Bitmaps zu vergleichen.
Ich hatte bei meinem ersten Versuch vorallem Probleme mit den konvertieren und ähnlichem. Aber nochmal zu dem Problem:
1. Die beiden Bitmaps haben unterschiedliche größen (Bild1 ist sowohl in y als auch in x Richtung "größer gleich" Bild2)
2. Es soll geprüft werden ob Bild 2 an einer bestimmten Stelle von Bild1 ist
3. Ergebnis soll true/false sein

Im Prinzip stelle ich mir also so etwas vor:
Delphi-Quellcode:
function compareBitmaps(Bild1, Bild2: TBitmap; posx,posy: Integer):boolean;
  //Posx und Posy sollen angeben an welcher Stellen von Bild1 Bild2 verglichen werden wollen (obere linke Ecke)
var x,
    y,
    comparedpix, //Anzahl der verglichenen Pixel
    machtingpix: integer; //Anzahl der übereinstimmenden Pixel
   
begin
  Result:=false;

  for x:=0 to Bild2.width-1 do
  begin
    for y:=0 to Bild2.height-1 do
    begin
      if Bild1.Pixels[posx+x,posy+y]=Bild2.Pixels[x,y] then matchingpix:=matchingpix+1;
             //Problem: keine "Pixels" Option für Tbitmaps nur für TCanvas
      comparedpix:=comparedpix+1;
    end;
  end;
  
  if comparedpix=matchingpix then result:=true;

end
Ich hoffe obiger Sketch des Programmcodes kann einen Eindruck vermitteln was ich vor habe. Ich suche auch immer noch eine etwas schnellere Methode. Scanline fällt in diesem Fall weg (???) weil ich ja nur einen Auschnitt vergleichen will.

Wäre nett wenn mir jemand auf die Sprünge helfen könnte

mfg Kahpee
  Mit Zitat antworten Zitat