如何使用16位灰度图像值
我想得到灰度图像的灰度值,不管图像是彩色还是灰色的,全部转化成灰度的,使用下面的方法,转换成位深8位的灰度图像,后来发觉8位太浅,想用16位的,可是发觉它的值总在0到256之间,请问是什么原因。
picture.pixelformat:=pf8bit;
...
......
for i:=0 to PictureHeight-1 do
begin
for j:=0 to PictureWidth-1 do
begin
Color:= ColorToRGB(Watermark.canvas.Pixels[j,i]);
B:=(Color and $FF0000) shr 16;
G:=(Color and $FF00) shr 8;
R:=(Color and $FF);
GrayPixels[i,j]:=R*0.3 + G*0.59 + B*0.11;
end;
end;
后来我改成pf16bit,发觉不行,GrayPixels[x,y]总在256以内,是不是计算公式不对,还是什么原因。