自动识别验证码
说到这里,验证码是生活上网中比较常见的一个东西,现在来做一个分享,利用代码来实现自动识别验证码
准备工作:
1.安装 pytesseract库、tesseract库和PIL库,直接在pycharm中安装即可
2.安装Tesseract-OCR
下载地址:Tesseract-OCR
然后点击下载之后 的exe文件进行安装,按部就班的进行即可,注意记住安装的路径
3.修改pycharm 中pytesseract.py的配置文件路径
tesseract_cmd = r'F:\tesseract_ocr\tesseract.exe'
后面的取值为刚才你安装的路径,如果路径中有转义符,可以在单引号之前加r
代码奉上:
import cv2
import numpy as np
from PIL import Image
import pytesseract as tess
def recongize_text(image):
gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) #转灰度图
ret, binary=cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY|cv2.THRESH_OTSU) #二值化处理
kernel1=cv2.getStructuringElement(cv2.MORPH_RECT,(1, 2)) #获取形状
bin1=cv2.morphologyEx(binary, cv2.MORPH_OPEN, kernel1) #开操作处理
kernel2 = cv2.getStructuringElement(cv2.MORPH_RECT, (2, 1)) #获取形状
open_out = cv2.morphologyEx(bin1, cv2.MORPH_OPEN, kernel2) #开操作处理
cv2.imshow("binary_image1",open_out)
cv2.bitwise_not(open_out,open_out) #非操作
textImage =Image.fromarray(open_out) #图像转换为numpy数组类型
text=tess.image_to_string(textImage) #文字进行识别
print("识别结果:%s"%text)
print("-----------------")
src=cv2.imread("number2.jpg")
cv2.imshow("source_image",src)
recongize_text(src)
cv2.waitKey(0)
cv2.destroyAllWindows()