最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#識別出圖片里的數(shù)字和字母

 更新時間:2015年03月23日 15:04:26   投稿:hebedich  
本文給大家分享的是C#識別出圖片里的數(shù)字和字母的代碼,主要是識別以前公司的軟件注冊碼截圖里的數(shù)字和字母,功能很簡單,也存在很大的局限性,這里僅僅是分享,小伙伴們參考下。

一個圖片識別小工具,原先主要是識別以前公司的軟件注冊碼截圖里的數(shù)字和字母(每次要一個一個框復制出來粘貼到注冊器里,很麻煩?。?,因為注冊碼出現(xiàn)的字母和數(shù)字基本就那幾個,所以識別庫的范圍設(shè)定的比較少。

原理和算法在代碼中做了詳細說明,功能存在很大的局限性,但我的想法是把這個思路和實現(xiàn)的辦法共享出來。

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

/*
 * 開發(fā)思路:圖片灰度處理,二進制,然后和圖片中的字二進制庫精確對比
 * 
 * 獲取字庫:通過下面代碼中g(shù)enerateLicense(Bitmap singlepic)方法獲得,具體操作:
 *   從圖片中截圖出(摳出)一個字符,然后處理得到二維的二進制矩陣,比如下面的字符1對應的二維矩陣
 *   00000
 *   00100
 *   11100
 *   00100
 *   00100
 *   00100
 *   00100
 *   00100
 *   00100
 *   11111
 *   00000
 *   00000
 *   
 * 注意:【相同字符,比如1,不同字體,字號,不同縮放大小的圖片,獲得到的二位矩陣中0、1排列和數(shù)量都是不同的!
 *     故按照此方法來寫出匹配所有字的話,那字庫就大了。。。】
 * 
 * 
*/
/// <summary>
/// 提取出該圖片內(nèi)的字符(將進過灰度處理的圖片轉(zhuǎn)化為0、1的二位數(shù)組)
/// </summary>
/// <param name="singlepic">圖片來源</param>
public void generateLicense(Bitmap singlepic)
{
  try
  {
    char[,] charArray = new char[singlepic.Height, singlepic.Width];  //定義個chai型的二維數(shù)組記錄每個像素上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的值用數(shù)字保存,以便于進行循環(huán)處理
      //code += codeCache + "\n";
      for (imageWidth = 0; imageWidth < array.Length; imageWidth++)
        charArray[imageHeight, imageWidth] = array[imageWidth];  //通過循環(huán)將每行值轉(zhuǎn)存到二維數(shù)組中
      imageHeight++;
    }    //*********************以上代碼可用來獲取一個字的圖片二進制數(shù)組,即字庫*****************************
 
    //開始和字庫進行匹配(我的工具中只需要下面的幾個字符)
    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();  //執(zhí)行identifySort方法,將我需要的格式在richTextBoxLicense文本框中顯示
    richTextBoxLicense.SelectionStart = richTextBoxLicense.TextLength;  //將光標移到最后面
  }
  catch { }
}

以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。

相關(guān)文章

  • C#中l(wèi)ock死鎖實例教程

    C#中l(wèi)ock死鎖實例教程

    這篇文章主要介紹了C#中l(wèi)ock死鎖的用法,對于共享資源的訪問及C#程序設(shè)計的安全性而言,有著非常重要的意義!需要的朋友可以參考下
    2014-08-08
  • C#利用iTextSharp組件給PDF文檔添加圖片/文字水印

    C#利用iTextSharp組件給PDF文檔添加圖片/文字水印

    這篇文章主要給大家介紹了關(guān)于如何C#利用iTextSharp組件給PDF文檔添加圖片/文字水印的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • SQLite在C#中的安裝與操作技巧

    SQLite在C#中的安裝與操作技巧

    SQLite,是一款輕型的數(shù)據(jù)庫,用于本地的數(shù)據(jù)儲存。其優(yōu)點有很多,下面通過本文給大家介紹SQLite在C#中的安裝與操作技巧,感興趣的的朋友參考下吧
    2017-08-08
  • C#新特性之可空引用類型

    C#新特性之可空引用類型

    本文詳細講解了C#新特性之可空引用類型,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • C#集合之棧的用法

    C#集合之棧的用法

    這篇文章介紹了C#集合之棧的用法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • C#中實現(xiàn)抽象類里建立靜態(tài)方法

    C#中實現(xiàn)抽象類里建立靜態(tài)方法

    這篇文章主要介紹了C#中實現(xiàn)抽象類里建立靜態(tài)方法,需要的朋友可以參考下
    2014-07-07
  • C# Windows API應用之基于FlashWindowEx實現(xiàn)窗口閃爍的方法

    C# Windows API應用之基于FlashWindowEx實現(xiàn)窗口閃爍的方法

    這篇文章主要介紹了C# Windows API應用之基于FlashWindowEx實現(xiàn)窗口閃爍的方法,結(jié)合實例形式分析了Windows API函數(shù)FlashWindowEx的功能、定義及實現(xiàn)窗口閃爍的相關(guān)技巧,需要的朋友可以參考下
    2016-08-08
  • C#中String與string的區(qū)別分析

    C#中String與string的區(qū)別分析

    這篇文章主要介紹了C#中String與string的區(qū)別,對于加深C#數(shù)據(jù)類型與類的理解有很好的參考借鑒價值,需要的朋友可以參考下
    2014-08-08
  • C#中DataBindings用法實例分析

    C#中DataBindings用法實例分析

    這篇文章主要介紹了C#中DataBindings用法,結(jié)合實例形式詳細分析了DataBindings綁定數(shù)據(jù)源及刷新數(shù)據(jù)的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • .NET?Core使用C#掃描并讀取圖片中的文字

    .NET?Core使用C#掃描并讀取圖片中的文字

    本文詳細講解了.NET?Core使用C#掃描并讀取圖片中的文字,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-12-12

最新評論

通城县| 崇文区| 中山市| 新沂市| 珲春市| 山东| 衢州市| 丽江市| 大余县| 封丘县| 连平县| 仙桃市| 孝感市| 杭州市| 宁明县| 昌邑市| 满洲里市| 卢氏县| 崇阳县| 乌兰浩特市| 繁昌县| 青田县| 皋兰县| 察哈| 巨野县| 贺兰县| 墨竹工卡县| 聊城市| 邵武市| 类乌齐县| 肇庆市| 明光市| 洛浦县| 郴州市| 贵定县| 辽宁省| 长葛市| 同仁县| 满城县| 长泰县| 石家庄市|