///------------灰度图处理计算方法--------------//
///------浮点算法:Gray=R*0.3+G*0.59+B*0.11----//
///------整数方法:Gray=(R*30+G*59+B*11)/100---//
///------移位方法:Gray =(R*28+G*151+B*77)>>8--//
///------平均值法:Gray=(R+G+B)/3------------//
///------仅取绿色:Gray=G----------------------//
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 /// <summary> 2 /// 图像灰度处理 3 /// </summary> 4 /// <param name="style">处理方式</param> 5 public Bitmap GrayImage(string style) 6 { 7 Bitmap bmp = new Bitmap(this.pbOld.Image); 8 Bitmap newBmp = new Bitmap(this.pbOld.Image); 9 Color color = new Color(); 10 Color newColor; 11 Byte r, g, b, gray=0; 12 13 for (int i = 0; i < bmp.Width; i++) 14 { 15 for (int j = 0; j < bmp.Height; j++) 16 { 17 //获取颜色 18 color = bmp.GetPixel(i, j); 19 r = color.R; 20 g = color.G; 21 b = color.B; 22 switch (style) 23 { 24 case "move": 25 //采用移位运算 26 gray = (Byte)((r * 19596 + g * 38469 + b * 7472) >> 16); 27 break; 28 case "float": 29 gray = (Byte)(r * 0.3 + g * 0.59 + b * 0.11); 30 break; 31 case "int": 32 gray=(Byte)((r*30+g*59+b*11)/100); 33 break; 34 case "avg": 35 gray=(Byte)((r+g+b)/3); 36 break; 37 case "green": 38 gray = g; 39 break; 40 } 41 42 newColor = Color.FromArgb(gray, gray, gray); 43 newBmp.SetPixel(i, j, newColor); 44 } 45 } 46 return newBmp; 47 }