資源簡介
具體實現思路:以4位數字的驗證碼為例
1、人工將驗證碼的4位數字每位對應的代碼存入數據庫中,每位存入0-9對應的代碼,每個數可以多存這樣可以提高識別率;
2、獲取驗證碼以后,對其進行去背景、灰度處理、去噪點處理、分片處理以后生成每位數字對應的代碼;
3、去背景色,這一步的目的是把驗證碼和背景顏色區別開來。
4、去噪聲:這一步要取出圖像上的孤立點。這些孤立點被認為是噪聲。
孤立點的定義:某個點,周圍沒有與該點等值的點。
或者某個連接塊,該連接塊的元素的個數小于某個給定值K, 把元素個數很小的連接塊也定義為孤立點,有助于去處噪聲。
去噪聲算法:參照去背景算法。
5、圖像銳化:圖像銳化的目的是增強邊界。這一步是可選的。看驗證碼的情況,這一步可以跳過。
6、圖片有效區域截?。哼@個操作是將圖片除驗證碼字符以外的邊框去掉,只留下驗證碼字符圖片,這樣保證分片的準確性。
7、圖片分片處理,這個處理是將整個圖片分割成單個字符圖片。
8、拿分片圖像生成的代碼(eg:000111110011…..)與DB中已有代碼相比較,取得相似度最高的即要驗證碼的字符;
注:如果DB的樣本越多,識別的準確率也越高,但是速度會相應變慢
代碼片段和文件信息
using?System;
using?System.Collections.Generic;
using?System.ComponentModel;
using?System.Data;
using?System.Drawing;
using?System.Linq;
using?System.Text;
using?System.Windows.Forms;
namespace?GetCodes
{
????public?partial?class?FrmMain?:?Form
????{
????????public?FrmMain()
????????{
????????????InitializeComponent();
????????}
????????private?void?button1_Click(object?sender?EventArgs?e)
????????{
????????????new?ImageOpt().Show();
????????}
????????private?void?button2_Click(object?sender?EventArgs?e)
????????{
????????????new?GetCode().Show();
????????}
????}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????1765376??2011-11-24?17:48??GetCode\GetCode\bin\Debug\code.mdb
?????文件?????151552??2011-11-21?14:38??GetCode\GetCode\bin\Debug\DotNet.fr
?????文件?????452096??2011-11-21?14:38??GetCode\GetCode\bin\Debug\DotNet.fr
?????文件??????35328??2011-11-25?12:41??GetCode\GetCode\bin\Debug\GetCodes.exe
?????文件??????71168??2011-11-25?12:41??GetCode\GetCode\bin\Debug\GetCodes.pdb
?????文件??????11592??2011-11-25?12:41??GetCode\GetCode\bin\Debug\GetCodes.vshost.exe
?????文件????????490??2007-07-21?02:33??GetCode\GetCode\bin\Debug\GetCodes.vshost.exe.manifest
?????文件????1455104??2009-09-02?09:54??GetCode\GetCode\bin\Debug\tessnet2_32.dll
?????文件?????????32??2010-09-07?11:26??GetCode\GetCode\bin\Debug\tessnet2_32.dll.refresh
?????文件????????392??2007-06-01?00:15??GetCode\GetCode\bin\Debug\tmpe\eng.DangAmbigs
?????文件????????672??2007-06-01?00:15??GetCode\GetCode\bin\Debug\tmpe\eng.freq-dawg
?????文件?????862544??2007-06-09?07:33??GetCode\GetCode\bin\Debug\tmpe\eng.inttemp
?????文件??????39862??2007-06-09?07:33??GetCode\GetCode\bin\Debug\tmpe\eng.normproto
?????文件????????590??2007-06-09?07:33??GetCode\GetCode\bin\Debug\tmpe\eng.pffmtable
?????文件????????480??2007-06-01?00:15??GetCode\GetCode\bin\Debug\tmpe\eng.unicharset
?????文件???????7289??2007-05-11?02:17??GetCode\GetCode\bin\Debug\tmpe\eng.user-words
?????文件?????809728??2007-06-01?00:15??GetCode\GetCode\bin\Debug\tmpe\eng.word-dawg
?????文件????????609??2011-11-24?15:44??GetCode\GetCode\FrmMain.cs
?????文件???????2676??2011-11-24?15:44??GetCode\GetCode\FrmMain.Designer.cs
?????文件???????5814??2011-11-24?15:44??GetCode\GetCode\FrmMain.resx
?????文件??????11868??2011-11-25?12:09??GetCode\GetCode\GetCode.cs
?????文件???????4893??2011-11-24?16:23??GetCode\GetCode\GetCode.csproj
?????文件????????168??2011-11-24?15:40??GetCode\GetCode\GetCode.csproj.user
?????文件??????24911??2011-11-24?17:47??GetCode\GetCode\GetCode.Designer.cs
?????文件???????5814??2011-11-24?17:47??GetCode\GetCode\GetCode.resx
?????文件??????10616??2011-11-25?12:42??GetCode\GetCode\ImageOpt.cs
?????文件???????3805??2011-11-24?15:42??GetCode\GetCode\ImageOpt.Designer.cs
?????文件???????5814??2011-11-21?14:58??GetCode\GetCode\ImageOpt.resx
?????文件???????1103??2011-11-25?12:41??GetCode\GetCode\obj\Debug\GetCode.csproj.FileListAbsolute.txt
?????文件????????970??2011-11-25?12:34??GetCode\GetCode\obj\Debug\GetCode.csproj.GenerateResource.Cache
............此處省略28個文件信息
- 上一篇:C# 屏幕截圖、抓圖工具
- 下一篇:C# 繪制圓形、矩形、三角形
評論
共有 條評論