java驗證碼識別

java驗證碼識別--1java

http://blog.csdn.net/problc/article/details/5794460eclipse

java驗證碼識別--2學習

http://blog.csdn.net/problc/article/details/5797507.net

java驗證碼識別--3blog

http://blog.csdn.net/problc/article/details/5800093圖片

java驗證碼識別--4ip

http://blog.csdn.net/problc/article/details/5846614get

java驗證碼識別--5驗證碼

http://blog.csdn.net/problc/article/details/5983276class

 

(本文僅用於學習研究圖像匹配識別原理,不得用於其餘用途。)

完整eclipse工程http://download.csdn.net/detail/problc/3829004

前面用的都是用的比較笨的,按像素比較的方法,屬於靠感受,沒有什麼理論支持的東西,效率也不高。

這裏我再試試用SVM的方法。用的是libsvm的java版。

前面的步驟仍是同樣的,去幹擾,分割。

把訓練的圖片縮放成16*16的大小。

1

把每張圖片轉換成libsvm的data格式

label indexi:valuei

2 1:0 2:0 3:0 4:0 5:0 6:0 7:0 8:0 9:0 10:0 11:0 12:0 13:0 14:1 15:1 16:0 17:0 18:0 19:0 20:1 21:1 。。。。

3 1:0 2:0 3:0 4:0 5:1 6:0 7:0 8:0 9:0 10:0 11:0 12:1 13:0 14:0 15:0 16:0 17:0 18:1 19:1 20:1 21:1 。。。。

前面的label就是對應的圖片的數字,indexi表示第i個像素,valuei表示第i個像素的值,像素爲黑是valuei爲1,白則爲0(更合理的方法好像是黑爲0.999,白爲0.001)

將轉換以後的數據存到data.txt裏面

而後調用libsvm的svmtrain data.txt.

這樣會獲得data.txt.model

svm_type c_svc 
kernel_type rbf 
gamma 0.00390625 
nr_class 7 
total_sv 187 
rho -0.030305073403358983 -0.06465012487258254 -0.013473850514953143 -0.2057364574548591 0.2585742203962866 -0.022815082566896124 -0.05173711373002207 0.02684272876633484 -0.08990192422316207 0.49014282977244295 -0.007697833034227977 0.12210859964254706 -0.011622244796025883 0.29303019765332594 0.07690393951197239 -0.06284951942287494 0.4075315521524534 -0.024304015205013997 0.273659082567747 0.09997688395282468 -0.3551440654987311
label 2 3 4 5 7 8 9 
nr_sv 27 32 20 26 19 39 24 
SV 
1.0 0.0 1.0 0.09512009049662619 1.0 1.0 1:0.0 2:0.0 3:0.0 4:0.0 5:0.0 6:0.0 7:0.0 8:0.0 9:0.0 10:0.0 11:0.0 12:0.0 13:0.0 14:1.0 15:1.0 16:0.0 17:0.0 18:0.0 19:0.0 20:1.0 21:1.0 22:1.0 23:0.0 24:0.0 25:0.0 26:0.0 27:0.0 28:1.0 29:1.0 30:1.0 31:1.0 32:1.0 33:0.0 34:0.0 35:1.0 36:1.0 37:1.0 38:1.0 39:0.0 40:0.0 41:0.0 42:0.0 43:1.0 44:1.0 45:1.0 46:1.0 47:1.0 48:0.0 49:0.0 50:0.0 51:1.0 52:1.0 53:1.0 54:1.0。。。。。。

獲得model以後,把要識別的圖片一樣弄成libsvm的格式,存成predict.txt

label indexi:valuei

0 1:0 2:0 3:0 4:0 5:0 6:0 7:0 8:0 9:0 10:0 11:0 12:0 13:0 14:1 15:1 16:0 17:0 18:0 19:0 20:1 21:1 。。。。

由於要識別的圖片還不知道是哪一個數字,因此其中label能夠填成任何數

而後用svmpredict predict.txt data.txt.model output.txt

這樣識別結果就在output.txt裏面了。

相關文章
相關標籤/搜索