颜色在计算机中以RGB的形式展示,RGB想必大家都清楚,三原色,这三种颜色可以调配出各种颜色。灰度图确只有黑白两种颜色(其实不是),二值化的图才是两种色。
灰度图的像素颜色不同于彩色图,灰度图的像素颜色RGB值都是一样的,其RGB值算法如下:
Gary=R * 0.3 +G * 0.59 + B * 0.11
由上述公式就能将彩色图转换为灰度图了,只需遍历图片像素,将每个像素值重置为我们计算出来的灰度值即可,下面是C#代码:
/// <summary>
/// 图像灰度化
/// </summary>
/// <param name="bmp"></param>
/// <returns></returns>
public static Bitmap ToGray(Bitmap bmp)
{
for (int i = 0; i < bmp.Width; i++)
{
for (int j = 0; j < bmp.Height; j++)
{
//获取该点的像素的RGB的颜色
Color color = bmp.GetPixel(i, j);
//利用公式计算灰度值
int gray = (int)(color.R * 0.3 + color.G * 0.59 + color.B * 0.11);
Color newColor = Color.FromArgb(gray, gray, gray);
bmp.SetPixel(i, j, newColor);
}
}
return bmp;
}
代码很简单,就是一个循环,效果如下:
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/241287.html
