Einzelnen Beitrag anzeigen

kamel08
(Gast)

n/a Beiträge
 
#7

AW: Farbmittelwert

  Alt 5. Okt 2012, 09:40
Für den Mittelwert kannst Du folgende Funktion nutzen;
(Hab' ich jetzt nicht getestet, kommt aber aus einem anderen Projekt und wurde nur für das Posting angepasst)
Das "Rechteck" ist in diesem Fall die gesamte an die Funktion übergebene Bitmap.

Delphi-Quellcode:
  Type
    TRGB = record
         r: byte;
         g: byte;
         b: byte;
    end;

Function TForm1.FarbWerte(Bitmap:TBitmap):TRGB;
type pixarray = Array[1..3] of Byte;
var y , x, zaehler, rot, gruen, blau : Integer;
    RGB:TRGB;
    P : ^pixarray;
begin
     bitmap.PixelFormat := pf24bit;
     rot:=0; gruen:=0; blau:=0; zaehler:=0;
     RGB.r := 0; RGB.g := 0; RGB.b := 0;
     for y := 0 to BitMap.Height - 1 do
     begin
          P := BitMap.ScanLine[y];
          for x := 0 to BitMap.Width - 1 do
          begin
               Inc(zaehler);
               rot := rot + P^[3];
               gruen := gruen + P^[2];
               blau := blau + P^[1];
               Inc(P);
          end;
     end;
     // Mittelwert berechnen
     if zaehler > 0 then
     begin
          RGB.r := rot div zaehler;
          RGB.g := gruen div zaehler;
          RGB.b := blau div zaehler;
     end;
     result := RGB;
end;
Die 'Binarisierung' (Pixel innerhalb der Toleranz schwarz zeichnen) findest Du sicherlich selbst.
  Mit Zitat antworten Zitat