颜色在计算机中以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/241287.html