下面是一些用 c 编写的代码,它们可以将 rgb 转换成灰度。
用于 rgb 到灰度转换的实际权重为0.3 R + 0.6 G + 0.11 B。
这些重量不是绝对重要的,所以你可以玩它们。
我把它们设计成0.25 R + 0.5 G + 0.25 B,这样会产生一个稍微暗一点的图像。
注意: 下面的代码采用 xRGB 32位像素格式
unsigned int *pntrBWImage=(unsigned int*)..data pointer..; //assumes 4*width*height bytes with 32 bits i.e. 4 bytes per pixel
unsigned int fourBytes;
unsigned char r,g,b;
for (int index=0;index<width*height;index++)
{
fourBytes=pntrBWImage[index];//caches 4 bytes at a time
r=(fourBytes>>16);
g=(fourBytes>>8);
b=fourBytes;
I_Out[index] = (r >>2)+ (g>>1) + (b>>2); //This runs in 0.00065s on my pc and produces slightly darker results
//I_Out[index]=((unsigned int)(r+g+b))/3; //This runs in 0.0011s on my pc and produces a pure average
}