今天就跟大家聊聊有關(guān)怎么進(jìn)行C#聯(lián)通新版驗(yàn)證碼識別的實(shí)現(xiàn),可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
你所需要的網(wǎng)站建設(shè)服務(wù),我們均能行業(yè)靠前的水平為你提供.標(biāo)準(zhǔn)是產(chǎn)品質(zhì)量的保證,主要從事成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司、企業(yè)網(wǎng)站建設(shè)、手機(jī)網(wǎng)站制作設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)、品牌網(wǎng)站制作、網(wǎng)頁制作、做網(wǎng)站、建網(wǎng)站。創(chuàng)新互聯(lián)建站擁有實(shí)力堅(jiān)強(qiáng)的技術(shù)研發(fā)團(tuán)隊(duì)及素養(yǎng)的視覺設(shè)計(jì)專才。
以前寫了篇 聯(lián)通充值卡自動充值的實(shí)現(xiàn),最近發(fā)現(xiàn)聯(lián)通官網(wǎng)改版了,隨便看了下發(fā)現(xiàn)新版的驗(yàn)證碼和以前的不同,發(fā)了點(diǎn)時間研究了下他的識別碼,它現(xiàn)在的驗(yàn)證碼如下:
現(xiàn)在將識別步驟說下
1,轉(zhuǎn)換灰度圖片
2,清除2px的邊框
3,分割驗(yàn)證碼個數(shù) (4)
4,生成字模庫
經(jīng)過以上步驟,可以得到下面這個效果
下面為部分實(shí)現(xiàn)代碼
public String GetCheckString(Bitmap bitmap) { UnCodebase ud = new UnCodebase(bitmap); ud.GrayByPixels(); ud.ClearPicBorder(2); ud.CutMap(14, 15, 0, 0); bitmap = ud.bmpobj; // bitmap = ud.ClearNoise(128, 1); String chkcode = ""; Bitmap[] arrmap = ud.SplitImg(bitmap, 4, 1); foreach (Bitmap item in arrmap) { String str = ud.GetCodebybitmap(item, 128); Boolean isEques = false; foreach (String strss in code) { String[] a = strss.Split(':'); if (str == a[1]) { chkcode += a[0]; isEques = true; break; } } if (!isEques) { String strCurrent = ""; double max = 0.0; foreach (String strss in code) { int len1, len2, min, count = 0; String[] a = strss.Split(':'); len1 = a[1].Length; len2 = str.Length; min = len1; if (min > len2) { min = len2; } for (int i = 0; i < min; i++) { if (str[i] == a[1][i]) { count++; } } double currrent = (count * 100.0 / min); if (max < currrent) { max = currrent; strCurrent = a[0].Trim(); } } chkcode += strCurrent.Trim(); } } return chkcode; }
通過這些處理后,識別成功率在90+%以上,
下面附上測試地址,代碼 100%C#實(shí)現(xiàn),方便asp.net調(diào)用,如果是C/C++實(shí)現(xiàn) asp.net 調(diào)非托管的有些麻煩,非得放到System32 或是一個絕對路徑下麻煩
看完上述內(nèi)容,你們對怎么進(jìn)行C#聯(lián)通新版驗(yàn)證碼識別的實(shí)現(xiàn)有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。