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

python腳本實(shí)現(xiàn)驗(yàn)證碼識(shí)別

 更新時(shí)間:2018年06月07日 10:46:25   作者:y0nghum1ng  
這篇文章主要為大家詳細(xì)介紹了python腳本實(shí)現(xiàn)驗(yàn)證碼識(shí)別的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

最近在折騰驗(yàn)證碼識(shí)別。最終的腳本的識(shí)別率在92%左右,9000張驗(yàn)證碼大概能識(shí)別出八千三四百?gòu)堊笥?。好吧,其?shí)是驗(yàn)證碼太簡(jiǎn)單。下面就是要識(shí)別的驗(yàn)證碼。

我主要用的是Python中的PIL庫(kù)。

首先進(jìn)行二值化處理。由于圖片中的噪點(diǎn)顏色比較淺,所以可以設(shè)定一個(gè)閾值直接過(guò)濾掉。這里我設(shè)置的閾值是150,像素大于150的賦值為1,小于的賦為0.

def set_table(a):
  table = []     
  for i in range(256):
    if i < a:
      table.append(0)
    else:
      table.append(1)
  return table

img = Image.open("D:/python/單個(gè)字體/A"+str(i)+".jpg")
pix = img.load()

#將圖片進(jìn)行灰度化處理
img1 = img.convert('L')

#閾值為150,參數(shù)為1,將圖片進(jìn)行二值化處理
img2 = img1.point(set_table(150),'1') 

處理后的圖片如下。

閾值不同產(chǎn)生的不同效果:

接下來(lái)對(duì)圖片進(jìn)行分割。遍歷圖片中所有像素點(diǎn),計(jì)算每一列像素為0的點(diǎn)的個(gè)數(shù)(jd)。對(duì)于相鄰兩列,若其中一列jd=0,而另一列jd!=0,則可以認(rèn)為這一列是驗(yàn)證碼中字符邊界,由此對(duì)驗(yàn)證碼進(jìn)行分割。這樣分割能達(dá)到比較好的效果,分割后得到的字符圖片幾乎能與模板完全相同。

(Width,Height) = img2.size
pix2 = img2.load()
x0 = []
y0 = []

for x in range(1,Width):
  jd = 0
  # print x
  for y in range(1,Height):
    # print y
    if pix2[x,y] == 0:
      jd+=1
  y0.append(jd)
  if jd > 0:
    x0.append(x)

#分別對(duì)各個(gè)字符邊界進(jìn)行判斷,這里只舉出一個(gè)    
for a in range(1,Width):
  if (y0[a] != 0)&(y0[a+1] != 0):
    sta1 = a+1
    break

分割完成后,對(duì)于識(shí)別,目前有幾種方法。可以遍歷圖片的每一個(gè)像素點(diǎn),獲取像素值,得到一個(gè)字符串,將該字符串與模板的字符串進(jìn)行比較,計(jì)算漢明距離或者編輯距離(即兩個(gè)字符串的差異度),可用Python-Levenshtein庫(kù)來(lái)實(shí)現(xiàn)。

我采用的是比較特征向量來(lái)進(jìn)行識(shí)別的。首先設(shè)定了4個(gè)豎直特征向量,分別計(jì)算第0、2、4、6列每一列像素值為0的點(diǎn)的個(gè)數(shù),與模板進(jìn)行比較,若小于閾值則認(rèn)為該字符與模板相同。為了提高識(shí)別率,如果通過(guò)豎直特征向量未能識(shí)別成功,引入水平特征向量繼續(xù)識(shí)別,原理與豎直特征向量相同。

另外,還可以通過(guò)局部特征進(jìn)行識(shí)別。這對(duì)于加入了旋轉(zhuǎn)干擾的驗(yàn)證碼有很好效果。由于我寫(xiě)的腳本識(shí)別率已經(jīng)達(dá)到了要求,所以并沒(méi)有用到這個(gè)。

最后的結(jié)果是這樣的:

最終在模板庫(kù)只有25條的情況下,識(shí)別率在92%左右(總共測(cè)試了一萬(wàn)六千張驗(yàn)證碼)。好吧,只能說(shuō)驗(yàn)證碼太簡(jiǎn)單。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python argparse命令參數(shù)與config配置參數(shù)示例深入詳解

    Python argparse命令參數(shù)與config配置參數(shù)示例深入詳解

    這篇文章主要介紹了Python argparse命令參數(shù)與config配置參數(shù),argparse是Python內(nèi)置的一個(gè)用于命令項(xiàng)選項(xiàng)與參數(shù)解析的模塊,通過(guò)在程序中定義好我們需要的參數(shù),然后在程序啟動(dòng)命令行傳遞我們想要改變的參數(shù)
    2023-03-03
  • python 用Matplotlib作圖中有多個(gè)Y軸

    python 用Matplotlib作圖中有多個(gè)Y軸

    這篇文章主要介紹了python 如何用Matplotlib作圖中有多個(gè)Y軸,幫助大家更好的利用python繪圖,感興趣的朋友可以了解下
    2020-11-11
  • Python通過(guò)90行代碼搭建一個(gè)音樂(lè)搜索工具

    Python通過(guò)90行代碼搭建一個(gè)音樂(lè)搜索工具

    這篇文章主要介紹了Python通過(guò)90行代碼搭建一個(gè)音樂(lè)搜索工具,需要的朋友可以參考下
    2015-07-07
  • python中使用you-get庫(kù)批量在線下載bilibili視頻的教程

    python中使用you-get庫(kù)批量在線下載bilibili視頻的教程

    這篇文章主要介紹了使用python中you-get庫(kù)批量在線下載bilibili視頻的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 基于python實(shí)現(xiàn)Pycharm斷點(diǎn)調(diào)試

    基于python實(shí)現(xiàn)Pycharm斷點(diǎn)調(diào)試

    這篇文章主要介紹了基于python實(shí)現(xiàn)Pycharm斷點(diǎn)調(diào)試,在我們寫(xiě)程序的時(shí)候,很容易遇到各種各樣的bug,然后編譯器提示程序出錯(cuò)的地方。很多時(shí)候可以通過(guò)提示的信息修改程序,但是有時(shí)我們想得到更多的信息,這個(gè)時(shí)候就需要進(jìn)行斷點(diǎn)調(diào)試,下面我們就一起來(lái)學(xué)習(xí)ycharm斷點(diǎn)調(diào)試
    2022-02-02
  • PyTorch實(shí)現(xiàn)圖像識(shí)別實(shí)戰(zhàn)指南

    PyTorch實(shí)現(xiàn)圖像識(shí)別實(shí)戰(zhàn)指南

    圖像識(shí)別是從給定圖像中提取有意義的信息(例如圖像內(nèi)容)的過(guò)程,下面這篇文章主要給大家介紹了關(guān)于PyTorch實(shí)現(xiàn)圖像識(shí)別的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • Python無(wú)權(quán)點(diǎn)文件轉(zhuǎn)化成鄰接矩陣方式

    Python無(wú)權(quán)點(diǎn)文件轉(zhuǎn)化成鄰接矩陣方式

    這篇文章主要介紹了Python無(wú)權(quán)點(diǎn)文件轉(zhuǎn)化成鄰接矩陣方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Python日期時(shí)間處理庫(kù)dateutil詳解

    Python日期時(shí)間處理庫(kù)dateutil詳解

    dateutil 為 Python 標(biāo)準(zhǔn)庫(kù) datetime 提供了強(qiáng)大的擴(kuò)展,這篇文章主要介紹了Python日期時(shí)間處理庫(kù)dateutil,需要的朋友可以參考下
    2022-09-09
  • Python實(shí)現(xiàn)語(yǔ)音識(shí)別和語(yǔ)音合成功能

    Python實(shí)現(xiàn)語(yǔ)音識(shí)別和語(yǔ)音合成功能

    聲音的本質(zhì)是震動(dòng),震動(dòng)的本質(zhì)是位移關(guān)于時(shí)間的函數(shù),波形文件(.wav)中記錄了不同采樣時(shí)刻的位移。這篇文章主要介紹了Python實(shí)現(xiàn)語(yǔ)音識(shí)別和語(yǔ)音合成,需要的朋友可以參考下
    2019-09-09
  • Python簡(jiǎn)單檢測(cè)文本類型的2種方法【基于文件頭及cchardet庫(kù)】

    Python簡(jiǎn)單檢測(cè)文本類型的2種方法【基于文件頭及cchardet庫(kù)】

    這篇文章主要介紹了Python簡(jiǎn)單檢測(cè)文本類型的方法,結(jié)合實(shí)例形式分析了基于基于文件頭及cchardet庫(kù)兩種文本類型檢測(cè)的方法,需要的朋友可以參考下
    2016-09-09

最新評(píng)論

临西县| 万荣县| 马龙县| 镇赉县| 天镇县| 富蕴县| 穆棱市| 宁晋县| 景泰县| 济阳县| 巢湖市| 城步| 逊克县| 什邡市| 建水县| 阿克| 吉木萨尔县| 巴东县| 东源县| 广饶县| 延边| 台安县| 临清市| 滁州市| 金坛市| 阿城市| 工布江达县| 浦东新区| 云龙县| 宁陕县| 卫辉市| 集安市| 长葛市| 呼玛县| 织金县| 繁峙县| 岱山县| 贵州省| 虹口区| 汉沽区| 乐平市|