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ě)代碼。
參考文獻(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通過(guò)商品條形碼查詢商品信息的實(shí)現(xiàn)示例
這篇文章主要介紹了利用Python通過(guò)商品條形碼查詢商品信息,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07Python運(yùn)行第一個(gè)PySide2的窗體程序
本文主要介紹了Python運(yùn)行第一個(gè)PySide2的窗體程序,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07pandas使用dtype/dtypes修改數(shù)據(jù)類型
在數(shù)據(jù)處理和分析中,經(jīng)常需要對(duì)數(shù)據(jù)進(jìn)行類型轉(zhuǎn)換以滿足特定的需求,本文主要介紹了pandas使用dtype/dtypes修改數(shù)據(jù)類型,具有一定的參考價(jià)值,感興趣的可以了解一下2024-06-06python三種數(shù)據(jù)結(jié)構(gòu)及13種創(chuàng)建方法總結(jié)
拿Python來(lái)說(shuō),數(shù)據(jù)結(jié)構(gòu)的概念也是超級(jí)重要,不同的數(shù)據(jù)結(jié)構(gòu),有著不同的函數(shù),供我們調(diào)用,接下來(lái),我們分別來(lái)介紹字符串、列表、字典的創(chuàng)建方法2021-09-09Xadmin+rules實(shí)現(xiàn)多選行權(quán)限方式(級(jí)聯(lián)效果)
這篇文章主要介紹了Xadmin+rules實(shí)現(xiàn)多選行權(quán)限方式(級(jí)聯(lián)效果),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04使用python查找替換PowerPoint演示文稿中的文本
演示文稿已成為商務(wù)會(huì)議、學(xué)術(shù)報(bào)告和教育培訓(xùn)中不可或缺的一部分,而PowerPoint演示文稿作為行業(yè)標(biāo)準(zhǔn)工具,更是承載著無(wú)數(shù)創(chuàng)意與信息的載體,本文將介紹如何使用Python來(lái)精確查找并替換PowerPoint演示文稿中的文本,需要的朋友可以參考下2024-07-07python實(shí)現(xiàn)定時(shí)發(fā)送郵件
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)定時(shí)發(fā)送郵件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12深度剖析使用python抓取網(wǎng)頁(yè)正文的源碼
平時(shí)打開(kāi)一個(gè)網(wǎng)頁(yè),除了文章的正文內(nèi)容,通常會(huì)有一大堆的導(dǎo)航,廣告和其他方面的信息。本文的目的,在于說(shuō)明如何從一個(gè)網(wǎng)頁(yè)中提取出文章的正文內(nèi)容,而過(guò)渡掉其他無(wú)關(guān)的的信息。2014-06-06