淺談圖形驗證碼的識別!
來源:互聯網
上載者:User
本問所講的技術只是驗證碼識別的初級技術,只能識別一些簡單的驗證碼,比如符合下列部分條件的:字型工整、位置固定、顏色統一、沒有幹擾點、背靜單純,初步體現了OCR原理(非常弱智:)
本文講的是通過抓特徵點來達到識別目的。圖片由一個一個的點(像素)組成,點的顏色變化就組成了我們看見的圖片,呈現一個圖象就是那幾個點按照一定的順序排列而已。
比如csdn使用的驗證碼(下圖),去掉上下左右的白邊,每個數字使用8*12=96個像素,蘭色的點就是我們看到的數字了,0-9這10個數字蘭色點都是固定的,比如"4"就是是(0, 6)(0, 7)(1, 5)(1, 7)(2, 4)(2, 7)(3, 3)(3, 7)(4, 2)(4, 7)(5, 1)(5, 7)(6, 0)(6, 1)(6, 2)(6, 3)(6, 4)(6, 5)(6, 6)(6, 7)(6, 8)(6, 9)(6, 10)(6, 11)(7, 7)這些點組成如何得到,繼續後面。
看起來複雜,實際上是很簡單的,先簡單處理下,你也許看的很明白,比如csdn登陸的驗證碼 ,用mspaint.exe(畫圖)開啟,放大到800%(查看--自訂--800%),
,這裡顯示圖片是一塊一塊組成了,現在我們需要把驗證碼的每個字元獨立處理,就要確定字元範圍了,如何確定?還是在mspaint.exe中,使用"選定"工具,保證每次劃的框剛好把數字完整“框”起來,並且沒有多餘的空白……稍微花點工夫,就可以確定範圍:四個字元的範圍範圍分別是以(3,4)、(12,4)、(21,4)、(30,4)作為左上方寬度是8高度是12的矩形。這些就是我的原始碼裡面
Dim Rc1 As New Rectangle(3, 4, 8, 12)
Dim Rc2 As New Rectangle(12, 4, 8, 12)
Dim Rc3 As New Rectangle(21, 4, 8, 12)
Dim Rc4 As New Rectangle(30, 4, 8, 12) 所定義的4個範圍的由來了。