- 人气:
- 放大
- 缩小
- 二维码
- 赞赏
delphi 图像灰度化处理
Type
pRGBTripleArray = ^TRGBTripleArray;
TRGBTripleArray = array [0 .. 65535] of TRGBTriple;
Ttemplate=record
end;
procedure TForm1.Button5Click(Sender: TObject);
var
Gray,x,y:Integer;
p:pRGBTripleArray;
BM:TBitmap;
begin
BM:=TBitmap.Create;
BM.Assign(Image1.Picture.Graphic);
Image1.Picture.Assign(BM);
BM.free;
for y:=1 to Image1.Picture.Height -1 do
begin
p:=Image1.Picture.Bitmap.ScanLine[Y];
for x:=1 to Image1.Picture.Width-1 do
begin
//采用YUV与RGB颜色空间变换的公式,即Y=0.3R+0.59G+0.11B
Gray:=Round(p[x].rgbtRed*0.3+p[x].rgbtGreen*0.59+p[x].rgbtBlue*0.11);
p[x].rgbtRed :=Byte(Gray);
p[x].rgbtGreen:=Byte(Gray);
p[X].rgbtBlue :=Byte(Gray);
end;
end;
Image1.Invalidate;
end;