System.Drawing.Bitmap myBitmap = new Bitmap(this.pictureBox1.Image);
for(int Xcount = 0;Xcount<myBitmap.Width;Xcount++)
{
for(int Ycount= 0;Ycount<myBitmap.Height;Ycount++)
{
Color rgb5 = myBitmap.GetPixel(Xcount, Ycount);
byte bBlue =rgb5.B;
byte bRed =rgb5.R;
byte bGreen =rgb5.G;
int Y=(bBlue+bRed+bGreen)/3;
//int Y = (9798 * bRed + 19235 * bGreen + 3735 * bBlue)/32768 ;
Color NewColor = Color.FromArgb(Y, Y, Y);
myBitmap.SetPixel(Xcount,Ycount,NewColor);
}
}
myBitmap.Save(@"c:\1.jpg");
彩色BMP档转成灰度
作者: cww
将RGB想成3D之X,Y,Z轴,则BMP的RGB为(r,g,b)与座标(Y,Y,Y)距离最小时的Y即为灰度值
Y = 0.29900 * R + 0.58700 * G + 0.11400 * B
整数化
Y = ( 9798*R + 19235*G + 3735*B) / 32768
RGB(Y, Y, Y)就可以了
灰度化只需取三原色的值,然后进行平均就可以了。
转载于:https://www.cnblogs.com/sosoli/archive/2007/07/16/819411.html