欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python實(shí)現(xiàn)動(dòng)態(tài)GIF英數(shù)驗(yàn)證碼識(shí)別示例

 更新時(shí)間:2024年01月26日 14:15:46   作者:爬蟲45度  
這篇文章主要為大家介紹了python實(shí)現(xiàn)動(dòng)態(tài)GIF英數(shù)驗(yàn)證碼識(shí)別示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

有哪些特征

  • 由數(shù)字和大寫的英文字母隨機(jī)組成

  • 圖片大小100*35

  • 驗(yàn)證碼的內(nèi)容會(huì)上下浮動(dòng)偶爾會(huì)超出上下邊界線,干擾項(xiàng)(也是數(shù)字或字母)從左至右翻滾經(jīng)過驗(yàn)證碼本身,這兩項(xiàng)會(huì)造成干擾

  • 分幀的起始是亂序的,因此想通過切出固定第幾幀來避免干擾不太現(xiàn)實(shí)

識(shí)別思路

分幀

隨便挑幾張下載下來的gif樣本,來判斷下有多少幀

from io import BytesIO
from PIL import Image
def get_frame_number(binary):
    img = Image.open(BytesIO(binary))
    _num = 0
    while True:
        try:
            a = img.tell()
            _num += 1
            img.seek(a + 1)
        except EOFError:
            break
    print(f'當(dāng)前gif有{_num}幀')
    return _num
with open('../error_images/08e3e54f0febfe40f314b6f4a07de6b8.gif', 'rb') as f:
    binary = f.read()
get_frame_number(binary)

       經(jīng)過測(cè)試,該類型gif圖有25幀,也就是說,可以拆分成25張圖片,對(duì)于靜態(tài)的圖片,識(shí)別起來就輕松多了

收集樣本及整理字符集

  • 我這里就直接說結(jié)果了,字符集有:數(shù)字2-9,大寫英文:A-Z,其中英文中的大寫I, O 這兩個(gè)是沒有的,因?yàn)檫@兩個(gè)容易和數(shù)字 0, 1 產(chǎn)生混淆。從這點(diǎn)上來說,開發(fā)者是動(dòng)了腦子的,減少了折磨,必須點(diǎn)個(gè)贊。

  • 建議標(biāo)注完數(shù)據(jù)集后,對(duì)所有標(biāo)簽過濾下這四個(gè)字符

  • 最后是采集了2.2w+的gif圖,然后每張圖切25幀,最后有55w+的靜態(tài)圖,下面是分幀代碼示例:

from io import BytesIO
from PIL import Image
def seek_img(img_name):
    img = Image.open(r'F:\code\hg_gifs\' + img_name)  # F:\code\hg_imgs1\ 是gif圖的路徑
    for i in range(25):
        try:
            b = BytesIO()
            img.save(b, format='png')
            _bytes = b.getvalue()
            img = cv2.imdecode(np.array(bytearray(_bytes), dtype='uint8'), cv2.IMREAD_UNCHANGED)
            png_name = img_name.split('_')[0] + '_' + str(i) + '.png'
            cv2.imwrite(r'F:\code\hg_pngs\{}'.format(png_name), img)  # F:\code\hg_pngs\ 是靜態(tài)圖保存路徑
            img.seek(img.tell() + 1)
        except EOFError:
            pass
rows = os.listdir(r'F:\code\hg_gifs')  # F:\code\hg_imgs1\ 是gif圖的路徑
for row in rows:
    seek_img(row)

訓(xùn)練與識(shí)別

訓(xùn)練過程就是把上面切下來的靜態(tài)圖,直接無腦dddd_trainer 訓(xùn)練即可

這里提一句,如果數(shù)據(jù)集質(zhì)量還可以的話,識(shí)別的時(shí)候?qū)嶋H上沒有必要一張gif圖去識(shí)別25次,這里我是step為3一共識(shí)別了9次,感覺已經(jīng)夠了

訓(xùn)練完之后小測(cè)1000次,成功967次,其中18次是代理超時(shí),967/982≈98.47%,正確率在98%上下,夠用了

以上就是python實(shí)現(xiàn)動(dòng)態(tài)GIF英數(shù)驗(yàn)證碼識(shí)別示例的詳細(xì)內(nèi)容,更多關(guān)于python識(shí)別GIF驗(yàn)證碼的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Flask使用SocketIO實(shí)現(xiàn)WebSocket與Vue進(jìn)行實(shí)時(shí)推送

    Flask使用SocketIO實(shí)現(xiàn)WebSocket與Vue進(jìn)行實(shí)時(shí)推送

    本文主要介紹了Flask使用SocketIO實(shí)現(xiàn)WebSocket與Vue進(jìn)行實(shí)時(shí)推送,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Python requests模塊cookie實(shí)例解析

    Python requests模塊cookie實(shí)例解析

    這篇文章主要介紹了Python requests模塊cookie實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Python小技巧練習(xí)分享

    Python小技巧練習(xí)分享

    這篇文章主要介紹了Python小技巧練習(xí)分享,文章基于python的相關(guān)內(nèi)容展開詳細(xì)的python小技巧內(nèi)容,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • Python實(shí)現(xiàn)批量檢測(cè)HTTP服務(wù)的狀態(tài)

    Python實(shí)現(xiàn)批量檢測(cè)HTTP服務(wù)的狀態(tài)

    本文給大家分享的是一個(gè)使用python實(shí)現(xiàn)的批量檢測(cè)web服務(wù)可用性的腳本代碼,主要功能有測(cè)試一組url的可用性(可以包括HTTP狀態(tài)、響應(yīng)時(shí)間等)并統(tǒng)計(jì)出現(xiàn)不可用情況的次數(shù)和頻率等。
    2016-10-10
  • Python中列表和元組的相關(guān)語句和方法講解

    Python中列表和元組的相關(guān)語句和方法講解

    這篇文章主要介紹了Python中列表和元組的相關(guān)語句和方法講解,是Python入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-08-08
  • Python?NumPy矩陣對(duì)象詳解及方法

    Python?NumPy矩陣對(duì)象詳解及方法

    這篇文章主要介紹了Python?NumPy矩陣對(duì)象詳解及方法,文章圍繞主題展開詳細(xì)的內(nèi)容戒殺,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-09-09
  • python matplotlib保存圖片不全問題及解決

    python matplotlib保存圖片不全問題及解決

    這篇文章主要介紹了python matplotlib保存圖片不全問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Python字典遍歷的陷阱

    Python字典遍歷的陷阱

    這篇文章主要介紹了Python字典遍歷的陷阱,我們都知道,Python中常常按照key、value的形式來遍歷字典的items。若value是基本數(shù)據(jù)類型(int,float等),則是傳的拷貝,是不能直接修改value的,下面來看看文章的詳細(xì)內(nèi)容吧
    2021-12-12
  • Python實(shí)現(xiàn)視頻下載與合成的示例代碼

    Python實(shí)現(xiàn)視頻下載與合成的示例代碼

    這篇文章主要為大家詳細(xì)介紹了Python是如何實(shí)現(xiàn)視頻的下載以及合成的,文中的實(shí)現(xiàn)步驟講解詳細(xì),感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧
    2022-04-04
  • Python實(shí)現(xiàn)利用最大公約數(shù)求三個(gè)正整數(shù)的最小公倍數(shù)示例

    Python實(shí)現(xiàn)利用最大公約數(shù)求三個(gè)正整數(shù)的最小公倍數(shù)示例

    這篇文章主要介紹了Python實(shí)現(xiàn)利用最大公約數(shù)求三個(gè)正整數(shù)的最小公倍數(shù),涉及Python數(shù)學(xué)運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09

最新評(píng)論