Einzelnen Beitrag anzeigen

Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

Re: Pixel gleicher Farbe zählen

  Alt 22. Jun 2008, 20:57
Hi,

... Ich weiß nicht genau was bei dir schief läuft. Ich habe mal selbst eine Funktion geschrieben, die, soweit ich sie getestet habe, funktioniert.

Ich hoffe ich werde nicht erschlagen weil ich fertigen Code poste.

Delphi-Quellcode:
TIntArray = Array of Integer;

function CountColors(bmp: TBitmap; Colors: Array of TColor): TIntArray;
var i,j,k: Integer;
    old: TPixelformat;
    x: PRGBQuad;
    tmp: TColor;
begin
  SetLength(Result,Length(Colors));
  old := bmp.PixelFormat; // Pixelformat sichern
  bmp.PixelFormat := pf32Bit; //Mit 32-Bit Bitmaps gehts schneller
  for i := 0 to bmp.Height-1 do
  begin
    x := bmp.ScanLine[i];
    for j:= 0 to bmp.Width-1 do
    begin
      tmp := RGB(x^.rgbRed,x^.rgbGreen,x^.rgbBlue);
      for k := 0 to High(Colors) do
        if Colors[k] = tmp then
          inc(Result[k]);
      inc(x);
    end;
  end;
  bmp.PixelFormat := old; // Altes Pixelformat wiederherstellen
end;
Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat