程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#辨認出圖片裡的數字和字母

C#辨認出圖片裡的數字和字母

編輯:C#入門知識

C#辨認出圖片裡的數字和字母。本站提示廣大學習愛好者:(C#辨認出圖片裡的數字和字母)文章只能為提供參考,不一定能成為您想要的結果。以下是C#辨認出圖片裡的數字和字母正文


一個圖片辨認小對象,本來重要是辨認之前公司的軟件注冊碼截圖裡的數字和字母(每主要一個一個框復制出來粘貼到注冊器裡,很費事!),由於注冊碼湧現的字母和數字根本就那幾個,所以辨認庫的規模設定的比擬少。

道理和算法在代碼中做了具體解釋,功效存在很年夜的局限性,但我的設法主意是把這個思緒和完成的方法同享出來。

源碼下載地址:
http://git.oschina.net/bobo2cj/iamge2text

/*
 * 開辟思緒:圖片灰度處置,二進制,然後和圖片中的字二進制庫准確比較
 * 
 * 獲得字庫:經由過程上面代碼中generateLicense(Bitmap singlepic)辦法取得,詳細操作:
 *   從圖片中截圖出(摳出)一個字符,然後處置獲得二維的二進制矩陣,好比上面的字符1對應的二維矩陣
 *   00000
 *   00100
 *   11100
 *   00100
 *   00100
 *   00100
 *   00100
 *   00100
 *   00100
 *   11111
 *   00000
 *   00000
 *   
 * 留意:【雷同字符,好比1,分歧字體,字號,分歧縮縮小小的圖片,取得到的二位矩陣中0、1分列和數目都是分歧的!
 *     故依照此辦法來寫出婚配一切字的話,那字庫就年夜了。。。】
 * 
 * 
*/
/// <summary>
/// 提掏出該圖片內的字符(將進過灰度處置的圖片轉化為0、1的二位數組)
/// </summary>
/// <param name="singlepic">圖片起源</param>
public void generateLicense(Bitmap singlepic)
{
  try
  {
    char[,] charArray = new char[singlepic.Height, singlepic.Width];  //界說個chai型的二維數組記載每一個像素上0/1的值,構成一個矩形
    int imageWidth = 0;  //記載圖片的像素寬度
    int imageHeight = 0;  //記載圖片的像素高度
    int dgGrayValue = 128;  //灰度值
    Color piexl;
    //string code = "";  //存儲每一個像素的0/1
    for (int posy = 0; posy < singlepic.Height; posy++)
    {//從上到下
      string codeCache = "";  //存儲每行的像素的0/1
      for (int posx = 0; posx < singlepic.Width; posx++)
      {//從左到右
        piexl = singlepic.GetPixel(posx, posy);
        if (piexl.R < dgGrayValue)  
        {// 假如該像素的色彩為黑色,值就為“1”
          codeCache = codeCache + "1";
        }
        else
        {// 不然該像素的色彩為白色,值就為“0”
          codeCache = codeCache + "0";              
        }
      }
      char[] array = codeCache.ToCharArray();  //每行的0/1的值用數字保留,以便於停止輪回處置
      //code += codeCache + "\n";
      for (imageWidth = 0; imageWidth < array.Length; imageWidth++)
        charArray[imageHeight, imageWidth] = array[imageWidth];  //經由過程輪回將每行值轉存到二維數組中
      imageHeight++;
    }    //*********************以上代碼可用來獲得一個字的圖片二進制數組,即字庫*****************************
 
    //開端和字庫停止婚配(我的對象中只須要上面的幾個字符)
    findWord(charArray, char0, imageHeight, imageWidth, BinaryWidth0, BinaryHeight0, '0');
    findWord(charArray, char1, imageHeight, imageWidth, BinaryWidth1, BinaryHeight1, '1');
    findWord(charArray, char2, imageHeight, imageWidth, BinaryWidth2, BinaryHeight2, '2');
    findWord(charArray, char3, imageHeight, imageWidth, BinaryWidth3, BinaryHeight3, '3');
    findWord(charArray, char4, imageHeight, imageWidth, BinaryWidth4, BinaryHeight4, '4');
    findWord(charArray, char5, imageHeight, imageWidth, BinaryWidth5, BinaryHeight5, '5');
    findWord(charArray, char6, imageHeight, imageWidth, BinaryWidth6, BinaryHeight6, '6');
    findWord(charArray, char7, imageHeight, imageWidth, BinaryWidth7, BinaryHeight7, '7');
    findWord(charArray, char8, imageHeight, imageWidth, BinaryWidth8, BinaryHeight8, '8');
    findWord(charArray, char9, imageHeight, imageWidth, BinaryWidth9, BinaryHeight9, '9');
    findWord(charArray, charA, imageHeight, imageWidth, BinaryWidthA, BinaryHeightA, 'a');
    findWord(charArray, charB, imageHeight, imageWidth, BinaryWidthB, BinaryHeightB, 'b');
    findWord(charArray, charC, imageHeight, imageWidth, BinaryWidthC, BinaryHeightC, 'c');
    findWord(charArray, charD, imageHeight, imageWidth, BinaryWidthD, BinaryHeightD, 'd');
    findWord(charArray, charE, imageHeight, imageWidth, BinaryWidthE, BinaryHeightE, 'e');
    findWord(charArray, charF, imageHeight, imageWidth, BinaryWidthF, BinaryHeightF, 'f');
    findWord(charArray, charP, imageHeight, imageWidth, BinaryWidthP, BinaryHeightP, 'p');
    findWord(charArray, charY, imageHeight, imageWidth, BinaryWidthY, BinaryHeightY, 'y');
    //------------------------------------END---------------------------------------------
    richTextBoxLicense.Text += identifySort();  //履行identifySort辦法,將我須要的格局在richTextBoxLicense文本框中顯示
    richTextBoxLicense.SelectionStart = richTextBoxLicense.TextLength;  //將光標移到最初面
  }
  catch { }
}

以上所述就是本文的全體內容了,願望年夜家可以或許愛好。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved