Python使用Cv2模塊識(shí)別驗(yàn)證碼的操作方法
業(yè)務(wù)需求
識(shí)別驗(yàn)證碼圖片中的數(shù)字信息,用python的圖形表示出來(lái)了
需求分析
使用Cv2模塊、pytesseract模塊進(jìn)行操作。CV2是計(jì)算機(jī)建模識(shí)別的庫(kù),用來(lái)給圖像進(jìn)行灰度處理,降噪處理,形態(tài)學(xué)分析。pytesseract模塊將智能識(shí)別圖片字體數(shù)字,用于打印出來(lái)。
代碼一
# -*- conding:utf-8 -*-
#二維碼識(shí)別,呈現(xiàn)不同效果。
#導(dǎo)入計(jì)算機(jī)學(xué)習(xí)開(kāi)源數(shù)據(jù)庫(kù)
import cv2 as cv
#導(dǎo)入計(jì)算機(jī)識(shí)別模塊
import pytesseract
#導(dǎo)入圖像模塊,形成圖像
from PIL import Image
#定義函數(shù),導(dǎo)入圖像
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,225,cv.THRESH_BINARY_INV | cv.THRESH_OTSU)
#形態(tài)學(xué)操作 ,腐蝕,膨脹
erode = cv.erode(binary,None,iterations=2)
dilate = cv.dilate(erode,None,iterations=1)
#邏輯運(yùn)算,背景設(shè)置為白色,字體為黑色,便于識(shí)別
cv.imshow('dilate',dilate)
cv.bitwise_not(dilate,dilate)
cv.imshow('binary-image',dilate)
#識(shí)別圖像
test_message = Image.fromarray(dilate)
text = pytesseract.image_to_string(test_message)
print(f'define result:{text}')
#導(dǎo)入圖像
src = cv.imread(r'./image.png')
#顯示圖像名字為input image,第二個(gè)是導(dǎo)入的圖像。
cv.imshow('input image',src)
#調(diào)取函數(shù)導(dǎo)入圖像
recognize_text(src)
cv.waitKey(0)
cv.destroyWindow()
結(jié)果分析
導(dǎo)入的原圖image的圖片情況:

編譯結(jié)果呈現(xiàn):

代碼二
驗(yàn)證碼圖片Image5.png:

代碼模塊
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)元素 開(kāi)操作
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)
# 邏輯運(yùn)算 讓背景為白色 字體為黑 便于識(shí)別
cv.bitwise_not(bin2, bin2)
cv.imshow('binary-image', bin2)
# 識(shí)別
test_message = Image.fromarray(bin2)
text = pytesseract.image_to_string(test_message)
print(f'識(shí)別結(jié)果:{text}')
src = cv.imread(r'./image5.png')
cv.imshow('input image', src)
recognize_text(src)
cv.waitKey(0)
cv.destroyAllWindows()
結(jié)果呈現(xiàn)

總結(jié)經(jīng)驗(yàn)
cv2,pytesseract的使用不復(fù)雜了,按照官方操作手冊(cè)來(lái)使用即可。安裝時(shí)候記得更換一下源的地址,有一些官方的源不容易搜索到CV2和pytesseract模塊了,要更換地址源才可以用。不過(guò)代碼模塊只能識(shí)別圖片中的數(shù)字,對(duì)圖片中的中文還沒(méi)有識(shí)別出來(lái)。可能需要重新寫代碼。
參考文獻(xiàn)
使用Python中的pytesseract模塊實(shí)現(xiàn)抓取圖片中文字
Python代碼實(shí)現(xiàn)驗(yàn)證碼識(shí)別
到此這篇關(guān)于Python使用Cv2模塊識(shí)別驗(yàn)證碼的文章就介紹到這了,更多相關(guān)Python Cv2驗(yàn)證碼識(shí)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python mutiprocessing多線程池pool操作示例
這篇文章主要介紹了Python mutiprocessing多線程池pool操作,結(jié)合實(shí)例形式分析了Python多線程模塊multiprocessing進(jìn)程池相關(guān)操作技巧,需要的朋友可以參考下2019-01-01
python單例模式的應(yīng)用場(chǎng)景實(shí)例講解
在本篇文章里小編給大家整理的是一篇關(guān)于python單例模式的應(yīng)用場(chǎng)景實(shí)例講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2021-02-02
Python發(fā)送http請(qǐng)求解析返回json的實(shí)例
下面小編就為大家分享一篇Python發(fā)送http請(qǐng)求解析返回json的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03
如何獲取Python簡(jiǎn)單for循環(huán)索引
這篇文章主要介紹了如何獲取Python簡(jiǎn)單for循環(huán)索引,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
Win10系統(tǒng)下安裝編輯器之神(The?God?of?Editor)Vim并且構(gòu)建Python生態(tài)開(kāi)發(fā)環(huán)境過(guò)程(2
這篇文章主要介紹了Win10系統(tǒng)下安裝編輯器之神(The?God?of?Editor)Vim并且構(gòu)建Python生態(tài)開(kāi)發(fā)環(huán)境(2020年最新攻略),本次我們?cè)赪in10平臺(tái)構(gòu)建一套以Vim為核心的Python開(kāi)發(fā)環(huán)境,需要的朋友可以參考下2023-01-01
python利用小波分析進(jìn)行特征提取的實(shí)例
今天小編就為大家分享一篇python利用小波分析進(jìn)行特征提取的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
手把手教你快速安裝gpu版本的pytorch(詳細(xì)圖文教程)
在Windows?10上安裝PyTorch時(shí),通常默認(rèn)安裝的是CPU版本,且下載速度較慢,本文提供了一個(gè)詳細(xì)的安裝指南,包括如何檢查CUDA版本、選擇合適的PyTorch、torchvision和torchaudio版本,并通過(guò)pip而非conda進(jìn)行安裝,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-09-09
在Python中使用xlrd和xlwt讀寫Excel文件代碼實(shí)例
這篇文章主要介紹了在Python中使用xlrd和xlwt讀寫Excel文件代碼實(shí)例,python操作excel主要用到xlrd和xlwt兩個(gè)庫(kù),即xlrd是讀excel,xlwt是寫excel庫(kù),文中提供了部分實(shí)例代碼,需要的朋友可以參考下2023-08-08

