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.