我想分析一个.Jpeg图像600x600,但这样做我想告诉我,红色值在230以上,绿色值在200以上。 现在我有这个项目正在进行,但迭代整个图像需要很长时间,并且会获得奇怪的像素颜色值(Color= + inttostr(RGB)
)。 任何人都可以借我一只手吗?颜色检测和分析
type
PRGBTripleArray = ^TRGBTripleArray;
TRGBTripleArray = array[0..4095] of TRGBTriple;
procedure TForm2.Button1Click(Sender: TObject);
var
RGB: Byte;
X, Y: Integer;
R, G, B: Byte;
Bitmap1: TBitmap;
ColorRGB: LongInt;
Pixels: PRGBTripleArray;
begin
Memo1.Lines.Clear;
Bitmap1 := TBitmap.Create;
try
Bitmap1.Assign(Image1.Picture.Graphic);
for Y := 0 to Bitmap1.Height - 1 do
begin
Pixels:= Bitmap1.ScanLine[Y];
Memo1.Lines.Add('======================');
Memo1.Lines.Add('Line # ' + IntToStr(Y));
Memo1.Lines.Add('======================');
for X := 0 to Bitmap1.Width - 1 do
begin
ColorRGB := ColorToRGB(Bitmap1.Canvas.Pixels[x, y]);
R := GetRValue(ColorRGB);
G := GetGValue(ColorRGB);
B := GetBValue(ColorRGB);
RGB:= R*G*B;
Memo1.Lines.Add(
'line=' + IntToStr(Y)
+ ' row=' + IntToStr(X)
+ ' Colour=' + IntToStr(RGB)
+ ' Red=' + IntToStr (R) // red
+ ' Green=' + IntToStr (G) // blue
+ ' Blue=' + IntToStr (B) // green
)
end;
end;
finally
Bitmap1.free;
end;
end;
end.
我根本没有得到'RGB:= R * G * B;'。你为什么要计算产品?另外,您可能需要设置像素格式。 – 2013-02-26 19:22:42
RGB值中的颜色从[0到16581375(255 * 255 * 255)]不等,我不应该使用该产品'R * G * B',但如果有时值为0,解决方案如何? – Ammadeux 2013-02-26 19:33:04
@AndreasRejbrand如何设置像素格式? – Ammadeux 2013-02-26 19:34:06