c#实现识别图片上的验证码数字

2019-12-30 11:03:40刘景俊
  • {  bmpobj = new Bitmap(pic); //转换为Format32bppRgb 
  • }   
  • /// <summary>  /// 根据RGB,计算灰度值 
  • /// </summary>  /// <param name="posClr">Color值</param> 
  • /// <returns>灰度值,整型</returns>  private int GetGrayNumColor(System.Drawing.Color posClr) 
  • {  return (posClr.R * 19595 + posClr.G * 38469 + posClr.B * 7472) >> 16; 
  • }   
  • /// <summary>  /// 灰度转换,逐点方式 
  • /// </summary>  public void GrayByPixels() 
  • {  for (int i = 0; i < bmpobj.Height; i++) 
  • {  for (int j = 0; j < bmpobj.Width; j++) 
  • {  int tmpValue = GetGrayNumColor(bmpobj.GetPixel(j, i)); 
  • bmpobj.SetPixel(j, i, Color.FromArgb(tmpValue, tmpValue, tmpValue));  } 
  • }  } 
  •   /// <summary> 
  • /// 去图形边框  /// </summary> 
  • /// <param name="borderWidth"></param>  public void ClearPicBorder(int borderWidth) 
  • {  for (int i = 0; i < bmpobj.Height; i++) 
  • {  for (int j = 0; j < bmpobj.Width; j++) 
  • {  if (i < borderWidth || j < borderWidth || j > bmpobj.Width - 1 - borderWidth || i > bmpobj.Height - 1 - borderWidth) 
  • bmpobj.SetPixel(j, i, Color.FromArgb(255, 255, 255));  } 
  • }  } 
  •   /// <summary> 
  • /// 灰度转换,逐行方式  /// </summary> 
  • public void GrayByLine()  { 
  • Rectangle rec = new Rectangle(0, 0, bmpobj.Width, bmpobj.Height);  BitmapData bmpData = bmpobj.LockBits(rec, ImageLockMode.ReadWrite, bmpobj.PixelFormat);// PixelFormat.Format32bppPArgb);