文章目录
一、待优化
1、字符串切割步骤中segment_image函数只能沿着x, y轴切割,导致预测结果对shear值十分敏感,可另寻切割函数以提高预测正确率
二、代码
单字母预测
1、验证码图像生成
import numpy as np
from PIL import Image, ImageDraw,ImageFont
from skimage import transform as tf
#验证码生成
def create_captcha(text, shear=0, size=(100, 30),scale=1):
im = Image.new("L", size, "black")
draw = ImageDraw.Draw(im)
font = ImageFont.truetype(r"bretan/Coval-Black.otf",22)
draw.text((0,0),text,fill=1,font=font)
image = np.array(im)
affine_tf = tf.AffineTransform(shear=shear)
image = tf.warp(image, affine_tf)
image = image / image.max()
shape = image.shape
shapex,shapey = (int(shape[0]*scale),int(shape[1]*scale))
image = tf.resize(image,(shapex,shapey))
return image
#验证码显示
%matplotlib inline
from matplotlib import pyplot as plt
image = create_captcha("GENE", shear=0.2,size=[len(str)*25,30])
plt.imshow(image, cmap='Greys')

2、字符串切割
##########图像切割
from skimage.measure import label,regionprops
#分割函数
def segment_image(image):
#找出连通像素 连通区域标记
#缺陷:只能返回方块,字体倾斜时效果变差
labeled_image=label(image>0)
#图像抽取 && 遍历
subimages=[]
for region in regionprops(labeled_image):
start_x, start_y, end_x, end_y = region.bbox
subimages.append(image

本文介绍了一种验证码识别系统,包括图像生成、字符分割、数据集创建等步骤,并通过神经网络进行训练与评估。针对存在的问题,如字符倾斜识别不准确等进行了优化。
最低0.47元/天 解锁文章
654

被折叠的 条评论
为什么被折叠?



