验证码识别笔记(二)
這是驗證碼識別的第二篇,先看一下樣圖吧,就是下面那張。
看到這張圖片,直觀上就知道比第一篇中的要簡單,這個“簡單”用語言來描述,可以得到下面的幾條結論:
1. 圖片中的字符邊界比較清晰,并且單個字符的內容比較單純;
2. 雖然字符間有粘連,但是綠色邊界圍住的白色區域沒有粘連,并且顏色一致,可以通過找連通分量的辦法把字符分離出來。
通過上面的分析,接下來的事就很簡單了。我覺得編碼很簡單,只看編碼不可能寫出好東西來,只有領會思路,理解方法才能觸類旁通。
好了,下面就是接下來的步驟:
1. 使用合適的閾值,對圖片進行二值化處理;
2. 使用BFS找出所有顏色為白色的連通分量;
3. 因為圖片在二值化之后,底色為白色,所以上圖會找出5個連通分量,四個字符和一個整幅圖片去掉字符的分量;
下面四個就是從樣圖中找到的連通分量:
??????
4. 去掉過大的那個連通分量,如果留下的連通分量如果不等于四個,則直接退出,如果等于四個,繼續進行算法;
注:這種情況是存在的,如果字符之間粘連區域過大,或者字符過小,一個字符被分割成兩個分量,但是因為驗證碼識別的特殊性,所以容許有一定的錯誤率存在,只要有成功的次數多余失敗次數,這樣的算法就是可行的。
5. 將找到的連通分量和模板進行匹配,找到匹配度最大的模板,返回對應的字符。
模板的做法:
因為該網站的驗證碼字體比較單一,所以下載一定數量的驗證碼圖片,覆蓋所有可能的字符種類,通過上面的方法,二值化之后找到所有的連通分量,將這些找到的連通分量進行人工分類標號,最后得到可以用的模板。
找連通分量的代碼可以參考:GitHub
轉載于:https://www.cnblogs.com/flyingpeguin/p/3518155.html
總結
以上是生活随笔為你收集整理的验证码识别笔记(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring的总结
- 下一篇: CentOS-6.3安装使用MongoD