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

python opencv pytesseract 驗證碼識別的實現(xiàn)

 更新時間:2020年08月28日 09:24:34   作者:葉庭云  
這篇文章主要介紹了python opencv pytesseract 驗證碼識別的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、環(huán)境配置

需要 pillow 和 pytesseract 這兩個庫,pip install 安裝就好了。

install pillow -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
pip install pytesseract -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

安裝好Tesseract-OCR.exe

pytesseract 庫的配置:搜索找到pytesseract.py,打開該.py文件,找到 tesseract_cmd,改變它的值為剛才安裝 tesseract.exe 的路徑。

二、驗證碼識別

識別驗證碼,需要先對圖像進(jìn)行預(yù)處理,去除會影響識別準(zhǔn)確度的線條或噪點,提高識別準(zhǔn)確度。

實例1

import cv2 as cv
import pytesseract
from PIL import Image


def recognize_text(image):
  # 邊緣保留濾波 去噪
  dst = cv.pyrMeanShiftFiltering(image, sp=10, sr=150)
  # 灰度圖像
  gray = cv.cvtColor(dst, cv.COLOR_BGR2GRAY)
  # 二值化
  ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)
  # 形態(tài)學(xué)操作  腐蝕 膨脹
  erode = cv.erode(binary, None, iterations=2)
  dilate = cv.dilate(erode, None, iterations=1)
  cv.imshow('dilate', dilate)
  # 邏輯運算 讓背景為白色 字體為黑 便于識別
  cv.bitwise_not(dilate, dilate)
  cv.imshow('binary-image', dilate)
  # 識別
  test_message = Image.fromarray(dilate)
  text = pytesseract.image_to_string(test_message)
  print(f'識別結(jié)果:{text}')


src = cv.imread(r'./test/044.png')
cv.imshow('input image', src)
recognize_text(src)
cv.waitKey(0)
cv.destroyAllWindows()

運行效果如下:

識別結(jié)果:3n3D

Process finished with exit code 0

實例2

import cv2 as cv
import pytesseract
from PIL import Image


def recognize_text(image):
  # 邊緣保留濾波 去噪
  blur =cv.pyrMeanShiftFiltering(image, sp=8, sr=60)
  cv.imshow('dst', blur)
  # 灰度圖像
  gray = cv.cvtColor(blur, cv.COLOR_BGR2GRAY)
  # 二值化
  ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)
  print(f'二值化自適應(yīng)閾值:{ret}')
  cv.imshow('binary', binary)
  # 形態(tài)學(xué)操作 獲取結(jié)構(gòu)元素 開操作
  kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 2))
  bin1 = cv.morphologyEx(binary, cv.MORPH_OPEN, kernel)
  cv.imshow('bin1', bin1)
  kernel = cv.getStructuringElement(cv.MORPH_OPEN, (2, 3))
  bin2 = cv.morphologyEx(bin1, cv.MORPH_OPEN, kernel)
  cv.imshow('bin2', bin2)
  # 邏輯運算 讓背景為白色 字體為黑 便于識別
  cv.bitwise_not(bin2, bin2)
  cv.imshow('binary-image', bin2)
  # 識別
  test_message = Image.fromarray(bin2)
  text = pytesseract.image_to_string(test_message)
  print(f'識別結(jié)果:{text}')


src = cv.imread(r'./test/045.png')
cv.imshow('input image', src)
recognize_text(src)
cv.waitKey(0)
cv.destroyAllWindows()

運行效果如下:

二值化自適應(yīng)閾值:181.0
識別結(jié)果:8A62N1

Process finished with exit code 0

實例3

import cv2 as cv
import pytesseract
from PIL import Image


def recognize_text(image):
  # 邊緣保留濾波 去噪
  blur = cv.pyrMeanShiftFiltering(image, sp=8, sr=60)
  cv.imshow('dst', blur)
  # 灰度圖像
  gray = cv.cvtColor(blur, cv.COLOR_BGR2GRAY)
  # 二值化 設(shè)置閾值 自適應(yīng)閾值的話 黃色的4會提取不出來
  ret, binary = cv.threshold(gray, 185, 255, cv.THRESH_BINARY_INV)
  print(f'二值化設(shè)置的閾值:{ret}')
  cv.imshow('binary', binary)
  # 邏輯運算 讓背景為白色 字體為黑 便于識別
  cv.bitwise_not(binary, binary)
  cv.imshow('bg_image', binary)
  # 識別
  test_message = Image.fromarray(binary)
  text = pytesseract.image_to_string(test_message)
  print(f'識別結(jié)果:{text}')


src = cv.imread(r'./test/045.jpg')
cv.imshow('input image', src)
recognize_text(src)
cv.waitKey(0)
cv.destroyAllWindows()

運行效果如下:

二值化設(shè)置的閾值:185.0
識別結(jié)果:7364

Process finished with exit code 0

到此這篇關(guān)于python opencv pytesseract 驗證碼識別的實現(xiàn)的文章就介紹到這了,更多相關(guān)opencv pytesseract 驗證碼識別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python語音識別API實現(xiàn)文字轉(zhuǎn)語音的幾種方法

    Python語音識別API實現(xiàn)文字轉(zhuǎn)語音的幾種方法

    本文主要介紹了Python語音識別API實現(xiàn)文字轉(zhuǎn)語音的幾種方法,文中根據(jù)實例編碼詳細(xì)介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Python時間差中seconds和total_seconds的區(qū)別詳解

    Python時間差中seconds和total_seconds的區(qū)別詳解

    今天小編就為大家分享一篇Python時間差中seconds和total_seconds的區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python中使用.py配置文件的方法詳解

    python中使用.py配置文件的方法詳解

    這篇文章主要介紹了python中使用.py配置文件的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • Python中的POST請求參數(shù)詳解

    Python中的POST請求參數(shù)詳解

    這篇文章主要介紹了Python中的POST請求參數(shù)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • python復(fù)制列表時[:]和[::]之間有什么區(qū)別

    python復(fù)制列表時[:]和[::]之間有什么區(qū)別

    這篇文章主要給大家介紹了關(guān)于python復(fù)制列表時[:]和[::]之間有什么區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • 詳解django的serializer序列化model幾種方法

    詳解django的serializer序列化model幾種方法

    序列化是將對象狀態(tài)轉(zhuǎn)換為可保持或傳輸?shù)母袷降倪^程。這篇文章主要介紹了詳解django的serializer序列化model幾種方法。具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • 擴展Django admin的list_filter()可使用范圍方法

    擴展Django admin的list_filter()可使用范圍方法

    今天小編就為大家分享一篇擴展Django admin的list_filter()可使用范圍方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • python實現(xiàn)圖像高斯金字塔的示例代碼

    python實現(xiàn)圖像高斯金字塔的示例代碼

    這篇文章主要介紹了python實現(xiàn)圖像高斯金字塔的示例代碼,幫助大家更好的利用python處理圖片,感興趣的朋友可以了解下
    2020-12-12
  • pycharm 使用心得(三)Hello world!

    pycharm 使用心得(三)Hello world!

    作為PyCharm編輯器的起步,我們理所當(dāng)然的先寫一個Hello word,并運行它。(此文獻(xiàn)給對IDE不熟悉的初學(xué)者)
    2014-06-06
  • pytorch下使用LSTM神經(jīng)網(wǎng)絡(luò)寫詩實例

    pytorch下使用LSTM神經(jīng)網(wǎng)絡(luò)寫詩實例

    今天小編就為大家分享一篇pytorch下使用LSTM神經(jīng)網(wǎng)絡(luò)寫詩實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01

最新評論

惠安县| 东丰县| 崇文区| 南和县| 敖汉旗| 灯塔市| 宁夏| 临武县| 仁化县| 兴宁市| 尤溪县| 肃北| 九龙县| 宣城市| 彭水| 清丰县| 泰州市| 绥阳县| 长春市| 北海市| 大城县| 从化市| 图木舒克市| 松溪县| 桐梓县| 汽车| 大丰市| 永胜县| 太仆寺旗| 尼玛县| 曲沃县| 泰宁县| 获嘉县| 开平市| 邛崃市| 达日县| 永清县| 克山县| 张家界市| 云南省| 西安市|