最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python3.5 + sklearn利用SVM自動識別字母驗證碼方法示例

 更新時間:2019年05月10日 15:25:48   作者:zjy105  
這篇文章主要給大家介紹了關(guān)于Python3.5 + sklearn利用SVM自動識別字母驗證碼的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

前言

最近正在研究人工智能,為了加深對算法的理解,決定寫個自動設(shè)別驗證碼的程序??戳丝淳W(wǎng)上的demo,大部分都是python2的寫法,而且驗證碼的識別都是用的數(shù)字做例子,那我就寫個基于python3字母識別的程序,不過一路寫下來碰到不少坑,大家感興趣的話可以慢慢看。

圖片識別有幾個比較大的步驟是必須完成的:

1、有大量的驗證碼圖片作為樣本

2、圖片要進(jìn)行處理  流程是:灰度化==》二值化==》字符切割==》識別分類

3、圖像識別要提取特征值,然后把圖片二值化的數(shù)據(jù)當(dāng)做樣本做訓(xùn)練,最后基于樣本完成對新驗證碼的識別

一、大量驗證碼準(zhǔn)備

因為要寫字母識別,所以需要大量的字母驗證碼,正好之前做過某電商的項目,印象中是純字母的查了下果然是的所以就用那個網(wǎng)站作為例子了。

獲取驗證碼方法很簡單,找到驗證碼動態(tài)生成的地址,

然后調(diào)用python的urllib.request獲得圖片然后保存就好了

二、圖片的灰度化和二值化

其實為了增強識別率,我們將彩色的圖片灰度化,

這樣就變成了黑白兩色,黑的是255白的是0,這樣更容易讓機器來識別。

灰度化和二值化之前、后的效果圖

三、圖片的分割

經(jīng)過觀察驗證碼可以發(fā)現(xiàn),驗證碼是4位的字母,

同時驗證碼直接是有空白分隔的(后面的驗證碼有黏連的單獨講)

這里使用垂直投影法,根據(jù)投影進(jìn)行圖片的切割。這個算法講起來太復(fù)雜,看代碼吧。。。

效果如下,反正就是切成了4個圖片

    

四、識別分類

這里因為圖片太多了,要對每個圖片分26個字母的哪一個太麻煩,所以借用Google的tesseract這個OCR的軟件,用它來幫我識別下圖片是哪個字母(當(dāng)然它識別的成功率不高,不然也不用人工智能了),然后識別錯誤的我再手動分類。


經(jīng)過ocr識別和人工分類后,我的temp目錄下就變成了這樣的,每個目錄下都是正確的字母圖片


五、提取特征值

將字母的文件夾圖片取出,提取特征值然后存儲到文本文件里

六、機器訓(xùn)練

這里使用sklearn.svm這個支持向量機的算法,來對數(shù)據(jù)進(jìn)行分類。

SVM的算法是啥,可以看看知乎大神的講解https://www.zhihu.com/question/21094489 ,

通過fit進(jìn)行訓(xùn)練后,將訓(xùn)練的結(jié)果保存到pkl文件里,其實里面都是0和1的特征值

七、最后的驗證就很簡單了

找個驗證碼圖片,調(diào)用之前的方法,變成二值化的數(shù)據(jù),然后用SVM進(jìn)行識別,就能得到正確的結(jié)果了

八、滴水算法(解決黏連問題)

這個驗證碼也不是完全都有空格分割好的,可能是長這樣的,字母直接黏在一起了


這樣的字母為了分割出來,就要用滴水算法,模擬水滴重力下落的過程,自動切分圖片。

可以看我的water.py文件里面是詳細(xì)的算法。

講講碰到的坑

1、python3不能用opencv了,尤其是cv2.cv方法只是python2用的,不用他換個python寫法一樣可以實現(xiàn)

2、原始圖片有藍(lán)色邊,剛開始老識別錯誤,后來發(fā)現(xiàn)問題后,要先進(jìn)行切割,保證只有字母是有顏色的,其它區(qū)域是白色的。

這個是cutImg方法的作用

3、使用Google的ocr時,使用了python的pytesseract,這個要先在電腦安裝Tesseract-OCR,然后要在程序里指定路徑才行,

不然會報錯誤的。pytesseract.pytesseract.tesseract_cmd = 'E:/Program Files (x86)/Tesseract-OCR/tesseract'

4、pytesseract.image_to_string(cur_img, config='-psm 7 outputbase letters')

這個letters是我自己創(chuàng)建的,位置在E:\Program Files (x86)\Tesseract-OCR\tessdata\configs 這里的letters是用來

約束識別范圍的,比如我設(shè)置tessedit_char_whitelist abcdefghijklmnopqrstuvwxyz 這就表示只識別字母,這樣

就會把1,0之類的變成l和o了

最后附上github的源碼地址 https://github.com/zjy090/verifyCode  (本地下載

下次研究遺傳算法GA的實現(xiàn)等寫好了也寫個demo分享給大家

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Python類與實例的使用詳解

    Python類與實例的使用詳解

    面向?qū)ο笞钪匾母拍罹褪穷悾–lass)和實例(Instance),必須牢記類是抽象的模板,比如Student類,而實例是根據(jù)類創(chuàng)建出來的一個個具體的“對象”,每個對象都擁有相同的方法,但各自的數(shù)據(jù)可能不同
    2022-08-08
  • Django框架的中的setting.py文件說明詳解

    Django框架的中的setting.py文件說明詳解

    這篇文章主要介紹了Django框架的中的setting.py文件說明詳解,這個文件包含了所有有關(guān)這個Django項目的配置信息,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • python 統(tǒng)計list中各個元素出現(xiàn)的次數(shù)的幾種方法

    python 統(tǒng)計list中各個元素出現(xiàn)的次數(shù)的幾種方法

    這篇文章主要介紹了python 統(tǒng)計list中各個元素出現(xiàn)的次數(shù)的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Python如何查看數(shù)據(jù)的類型

    Python如何查看數(shù)據(jù)的類型

    這篇文章主要介紹了Python如何查看數(shù)據(jù)的類型方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • python魔法方法-自定義序列詳解

    python魔法方法-自定義序列詳解

    下面小編就為大家?guī)硪黄猵ython魔法方法-自定義序列詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • 使用Python高效獲取網(wǎng)絡(luò)數(shù)據(jù)的操作指南

    使用Python高效獲取網(wǎng)絡(luò)數(shù)據(jù)的操作指南

    網(wǎng)絡(luò)爬蟲是一種自動化程序,用于訪問和提取網(wǎng)站上的數(shù)據(jù),Python是進(jìn)行網(wǎng)絡(luò)爬蟲開發(fā)的理想語言,擁有豐富的庫和工具,使得編寫和維護(hù)爬蟲變得簡單高效,本文將詳細(xì)介紹如何使用Python進(jìn)行網(wǎng)絡(luò)爬蟲開發(fā),包括基本概念、常用庫、數(shù)據(jù)提取方法、反爬措施應(yīng)對以及實際案例
    2025-03-03
  • python抓取網(wǎng)頁中鏈接的靜態(tài)圖片

    python抓取網(wǎng)頁中鏈接的靜態(tài)圖片

    這篇文章主要為大家詳細(xì)介紹了python抓取網(wǎng)頁中鏈接的靜態(tài)圖片,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 關(guān)于python爬蟲應(yīng)用urllib庫作用分析

    關(guān)于python爬蟲應(yīng)用urllib庫作用分析

    這篇文章主要介紹了關(guān)于python爬蟲應(yīng)用urllib庫作用分析,想要進(jìn)行python爬蟲首先我們需要先將網(wǎng)頁上面的信息給獲取下來,這就是utllib庫的作用,有需要的朋友可以借鑒參考下
    2021-09-09
  • python字典添加值的方法及實例代碼分享

    python字典添加值的方法及實例代碼分享

    在本篇文章里小編給大家整理的是一篇關(guān)于python字典添加值的方法及實例代碼講解,有興趣的朋友們可以學(xué)習(xí)下。
    2022-11-11
  • 僅利用30行Python代碼來展示X算法

    僅利用30行Python代碼來展示X算法

    這篇文章主要介紹了僅利用30行Python代碼來展示X算法,同時還有對算法實現(xiàn)的復(fù)雜度的說明,需要的朋友可以參考下
    2015-04-04

最新評論

浙江省| 田东县| 舟山市| 鲜城| 姜堰市| 大英县| 盐城市| 南安市| 洪洞县| 札达县| 临颍县| 罗源县| 娱乐| 郸城县| 丁青县| 嘉荫县| 肇庆市| 古蔺县| 乌恰县| 大同县| 沁阳市| 屏山县| 安宁市| 红桥区| 响水县| 陕西省| 鹤岗市| 桓仁| 三原县| 肥东县| 岢岚县| 九台市| 兴和县| 东港市| 沙雅县| 恭城| 岗巴县| 敦化市| 娱乐| 平邑县| 合江县|