這個東西,從放寒假的前一天,老師叫我做起,已經快2個月了,開學一個星期后,在陳老師的督促下,算是做的差不多了。
這個的應用領域主要是自動化程序,驗證碼可以說是網絡安全的一道防火牆,自動化程序的難點。
但是,對於這個圖像識別這個技術來說,還遠遠不夠,至於應用的角度,更是狹窄,因此這不是一個終點,恰恰是一個起點。
機器學習有監督學習和無監督學習兩種;我這里是監督學習,當然就得我手動的寫每一張驗證碼的正確值了。
語言: python
工具: opencv
總體思路:樣本學習,測試;
1、樣本學習:
- 首先要對樣本去噪,去噪將干擾線刪除,對於一個像素點來說,他的四周的其余的點,有5個,或者較多的像素點是空白,那么將可以判斷他是噪點,而將他刪除掉。
- 扭曲矯正,我這里的扭曲矯正,是片面的,真正是很難有較好的效果,對於不同的驗證碼,有不同的特點,有一些驗證碼的產生,就有這樣的特點,角落處,有陰影,這使得字符有扭曲,根據這里,來實現不同程度的扭曲矯正。
- 切割圖像,將每個字符切割下來,這里也是相對的了,粘連較嚴重即將影響字符的正確。
- 二進制化圖像,是字符的地方是0,沒有的地方是1(這里相反沒有問題)。生成訓練集。
- 訓練模型制作,字符,二進制的像素點,joblib持久化保存,將模型保存到本地,進行預測,速度更快。
- 通過隨機森林算法將樣本數據訓練。
2、測試:
- 測試的步驟和學習的步驟類似。
- 通過訓練模型得到的分類結果計算正確率。
最后識別率在100%