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

談?wù)凱ython進(jìn)行驗(yàn)證碼識(shí)別的一些想法

 更新時(shí)間:2016年01月25日 10:26:02   作者:Manning  
關(guān)于python驗(yàn)證碼識(shí)別,主要方法有幾類:一類是通過對圖片進(jìn)行處理,然后利用字庫特征匹配的方法,一類是圖片處理后建立字符對應(yīng)字典,還有一類是直接利用ocr模塊進(jìn)行識(shí)別。不管是用什么方法,都需要首先對圖片進(jìn)行處理,于是試著對下面的驗(yàn)證碼進(jìn)行分析

用python加“驗(yàn)證碼”為關(guān)鍵詞在baidu里搜一下,可以找到很多關(guān)于驗(yàn)證碼識(shí)別的文章。我大體看了一下,主要方法有幾類:一類是通過對圖片進(jìn)行處理,然后利用字庫特征匹配的方法,一類是圖片處理后建立字符對應(yīng)字典,還有一類是直接利用ocr模塊進(jìn)行識(shí)別。不管是用什么方法,都需要首先對圖片進(jìn)行處理,于是試著對下面的驗(yàn)證碼進(jìn)行分析。

一、圖片處理

這個(gè)驗(yàn)證碼中主要的影響因素是中間的曲線,首先考慮去掉圖片中的曲線。考慮了兩種算法:
第一種是首先取到曲線頭的位置,即x=0時(shí),黑點(diǎn)的位置。然后向后移動(dòng)x的取值,觀察每個(gè)x下黑點(diǎn)的位置,判斷前后兩個(gè)相鄰黑點(diǎn)之間的距離,如果距離在一定范圍內(nèi),可以基本判斷該點(diǎn)是曲線上的點(diǎn),最后將曲線上的點(diǎn)全部繪成白色。試了一下這種方法,結(jié)果得到的圖片效果很一般,曲線不能完全去除,而且容量將字符的線條去除。
第二種考慮用單位面積內(nèi)點(diǎn)的密度來進(jìn)行計(jì)算。于是首先計(jì)算單位面積內(nèi)點(diǎn)的個(gè)數(shù),將單位面積內(nèi)點(diǎn)個(gè)數(shù)少于某一指定數(shù)的面積去除,剩余的部分基本上就是驗(yàn)證碼字符的部分。本例中,為了便于操作,取了5*5做為單位范圍,并調(diào)整單位面積內(nèi)點(diǎn)的標(biāo)準(zhǔn)密度為11。處理后的效果:

二、字符驗(yàn)證

這里我使用的方法是利用pytesser進(jìn)行ocr識(shí)別,但由于這類驗(yàn)證碼字符的不規(guī)則性,使得驗(yàn)證結(jié)果的準(zhǔn)確性并不是很高。具體哪位大牛,有什么好的辦法,希望能給指點(diǎn)一下。

三、準(zhǔn)備工作與代碼實(shí)例

1、PIL、pytesser、tesseract

(1)安裝PIL:下載地址:http://www.pythonware.com/products/pil/
(2)pytesser:下載地址:http://code.google.com/p/pytesser/,下載解壓后直接放在代碼相同的文件夾下,即可使用。
(3)Tesseract OCR engine下載:http://code.google.com/p/tesseract-ocr/,下載后解壓,找到tessdata文件夾,用其替換掉pytesser解壓后的tessdata文件夾即可。

2、具體代碼

#encoding=utf-8
###利用點(diǎn)的密度計(jì)算
import Image,ImageEnhance,ImageFilter,ImageDraw
import sys
from pytesser import *
#計(jì)算范圍內(nèi)點(diǎn)的個(gè)數(shù)
def numpoint(im):
w,h = im.size
data = list( im.getdata() )
mumpoint=0
for x in range(w):
for y in range(h):
if data[ y*w + x ] !=255:#255是白色
mumpoint+=1
return mumpoint
#計(jì)算5*5范圍內(nèi)點(diǎn)的密度
def pointmidu(im):
w,h = im.size
p=[]
for y in range(0,h,5):
for x in range(0,w,5):
box = (x,y, x+5,y+5)
im1=im.crop(box)
a=numpoint(im1)
if a<11:##如果5*5范圍內(nèi)小于11個(gè)點(diǎn),那么將該部分全部換為白色。
for i in range(x,x+5):
for j in range(y,y+5):
im.putpixel((i,j), 255)
im.save(r'img.jpg')
def ocrend():##識(shí)別
image_name = "img.jpg"
im = Image.open(image_name)
im = im.filter(ImageFilter.MedianFilter())
enhancer = ImageEnhance.Contrast(im)
im = enhancer.enhance(2)
im = im.convert('1')
im.save("1.tif")
print image_file_to_string('1.tif') 
if __name__=='__main__':
image_name = "1.png"
im = Image.open(image_name)
im = im.filter(ImageFilter.DETAIL)
im = im.filter(ImageFilter.MedianFilter())
enhancer = ImageEnhance.Contrast(im)
im = enhancer.enhance(2)
im = im.convert('1')
##a=remove_point(im)
pointmidu(im)
ocrend()

本人的這個(gè)方法,最終識(shí)別率確實(shí)不高,寫出來,哪位高手有好的思路或者做法,望不惜賜教!

相關(guān)文章

  • python數(shù)字圖像處理之圖像自動(dòng)閾值分割示例

    python數(shù)字圖像處理之圖像自動(dòng)閾值分割示例

    這篇文章主要為大家介紹了python數(shù)字圖像處理之圖像自動(dòng)閾值分割示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Python 實(shí)現(xiàn)取矩陣的部分列,保存為一個(gè)新的矩陣方法

    Python 實(shí)現(xiàn)取矩陣的部分列,保存為一個(gè)新的矩陣方法

    今天小編就為大家分享一篇Python 實(shí)現(xiàn)取矩陣的部分列,保存為一個(gè)新的矩陣方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • 在Python中使用模塊的教程

    在Python中使用模塊的教程

    這篇文章主要介紹了在Python中使用模塊的教程,示例代碼基于Python2.x版本,需要的朋友可以參考下
    2015-04-04
  • python繪制云雨圖raincloud?plot

    python繪制云雨圖raincloud?plot

    這篇文章主要介紹了python繪制云雨圖raincloud?plot,Raincloud的Python實(shí)現(xiàn)是一個(gè)名為PtitPrince的包,它寫在seaborn之上,這是一個(gè)Python繪圖庫,用于從pandas數(shù)據(jù)幀中獲取漂亮的繪圖
    2022-08-08
  • python 自動(dòng)軌跡繪制的實(shí)例代碼

    python 自動(dòng)軌跡繪制的實(shí)例代碼

    今天小編就為大家分享一篇python 自動(dòng)軌跡繪制的實(shí)例代碼,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Pandas搭配lambda組合使用詳解

    Pandas搭配lambda組合使用詳解

    大家好,在之前文章中,我們介紹了很多 Python 用法。喜歡的朋友可以看一下歷史文章。今天我給大家講講lambda與pandas模塊配合使用方法,熟練掌握可以極大地提高數(shù)據(jù)分析與挖掘的效率
    2022-01-01
  • python 查找輪廓的實(shí)現(xiàn)示例

    python 查找輪廓的實(shí)現(xiàn)示例

    邊緣檢測是一種從圖像中提取輪廓和特征的技術(shù),本文主要介紹了python查找輪廓的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • Python 50行爬蟲抓取并處理圖靈書目過程詳解

    Python 50行爬蟲抓取并處理圖靈書目過程詳解

    這篇文章主要介紹了Python 50行爬蟲抓取并處理圖靈書目過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Python實(shí)現(xiàn)微博動(dòng)態(tài)圖片爬取詳解

    Python實(shí)現(xiàn)微博動(dòng)態(tài)圖片爬取詳解

    這篇文章主要為大家介紹了如何利用Python中的爬蟲實(shí)現(xiàn)微博動(dòng)態(tài)圖片的爬取,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起動(dòng)手試一試
    2022-03-03
  • python3 判斷列表是一個(gè)空列表的方法

    python3 判斷列表是一個(gè)空列表的方法

    今天小編就為大家分享一篇python3 判斷列表是一個(gè)空列表的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05

最新評論

舒城县| 永州市| 景宁| 崇州市| 台湾省| 手游| 浏阳市| 梧州市| 兴安盟| 固镇县| 临泉县| 平阴县| 吴川市| 瓮安县| 宁河县| 达尔| 北京市| 南宁市| 长宁区| 建宁县| 遂川县| 济阳县| 凉山| 永登县| 龙里县| 邹城市| 临猗县| 屏山县| 浮梁县| 鸡西市| 高雄县| 桃园县| 盘山县| 江北区| 安泽县| 桓台县| 武夷山市| 黑河市| 龙岩市| 桐乡市| 封开县|