Python使用Cv2模塊識別驗證碼的操作方法
業(yè)務需求
識別驗證碼圖片中的數字信息,用python的圖形表示出來了
需求分析
使用Cv2模塊、pytesseract模塊進行操作。CV2是計算機建模識別的庫,用來給圖像進行灰度處理,降噪處理,形態(tài)學分析。pytesseract模塊將智能識別圖片字體數字,用于打印出來。
代碼一
# -*- conding:utf-8 -*- #二維碼識別,呈現不同效果。 #導入計算機學習開源數據庫 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,225,cv.THRESH_BINARY_INV | cv.THRESH_OTSU) #形態(tài)學操作 ,腐蝕,膨脹 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'define result:{text}') #導入圖像 src = cv.imread(r'./image.png') #顯示圖像名字為input image,第二個是導入的圖像。 cv.imshow('input image',src) #調取函數導入圖像 recognize_text(src) cv.waitKey(0) cv.destroyWindow()
結果分析
導入的原圖image的圖片情況:
編譯結果呈現:
代碼二
驗證碼圖片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'二值化自適應閾值:{ret}') cv.imshow('binary', binary) # 形態(tà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) # 邏輯運算 讓背景為白色 字體為黑 便于識別 cv.bitwise_not(bin2, bin2) cv.imshow('binary-image', bin2) # 識別 test_message = Image.fromarray(bin2) text = pytesseract.image_to_string(test_message) print(f'識別結果:{text}') src = cv.imread(r'./image5.png') cv.imshow('input image', src) recognize_text(src) cv.waitKey(0) cv.destroyAllWindows()
結果呈現
總結經驗
cv2,pytesseract的使用不復雜了,按照官方操作手冊來使用即可。安裝時候記得更換一下源的地址,有一些官方的源不容易搜索到CV2和pytesseract模塊了,要更換地址源才可以用。不過代碼模塊只能識別圖片中的數字,對圖片中的中文還沒有識別出來。可能需要重新寫代碼。
參考文獻
使用Python中的pytesseract模塊實現抓取圖片中文字
Py之cv2:cv2(OpenCV,opencv-python)庫的簡介、安裝、使用方法(常見函數、圖像基本運算等)最強詳細攻略
到此這篇關于Python使用Cv2模塊識別驗證碼的文章就介紹到這了,更多相關Python Cv2驗證碼識別內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python三種數據結構及13種創(chuàng)建方法總結
拿Python來說,數據結構的概念也是超級重要,不同的數據結構,有著不同的函數,供我們調用,接下來,我們分別來介紹字符串、列表、字典的創(chuàng)建方法2021-09-09使用python查找替換PowerPoint演示文稿中的文本
演示文稿已成為商務會議、學術報告和教育培訓中不可或缺的一部分,而PowerPoint演示文稿作為行業(yè)標準工具,更是承載著無數創(chuàng)意與信息的載體,本文將介紹如何使用Python來精確查找并替換PowerPoint演示文稿中的文本,需要的朋友可以參考下2024-07-07