前面有篇文章提到关于验证码的生成:https://blog.csdn.net/huoyingchong64/article/details/89788676
本文主要是针对这个验证码进行的机器学习算法的验证码处理。
主要包含灰值化,二值化,降噪,分割字符。下面就是经过测试后的代码。其中
rate = 0.01 # 在threshold的适当范围内进行处理,由于rate设置为0.1时,有一个字母灰度太接近这个阈值,导致映射为0
这个rate比例值还需要测试。当然比例直接设置为0也是可以的,也就是判断i==threshold
#coding:utf-8
import numpy as np
from PIL import Image,ImageDraw,ImageFile
import cv2
import imagehash
import time
import os
import pytesseract
from collections import defaultdict
rootdir = “D:/CapCha/Test”
# tesseract.exe所在的文件路径
pytesseract.pytesseract.tesseract_cmd = ‘C://Program Files (x86)/Tesseract-OCR/tesseract.exe’
def ReadFileList():
#尝试直接识别
list = os.listdir(rootdir)
for i in range(0,len(list))[0:10]:
path = os.path.join(rootdir,list[i])
print(path)
if os.path.isfile(path):
print(os.path.basename(path))
image = Image.open(path)
code = pytesseract.image_to_string(image)
print(code)
def splitimage(rownum, colnum, dstpath,img_name,outpath):
'''
图片分割
:param rownum: 切割行数
:param colnum: 切割列数
:param dstpath: 图片文件路径
:param img_name: 要切割的图片文件
:param outpath: 输出文件路径
:return:
'''
img = Image.open(img_name)
w, h =