生成汉字验证码,用于汉字识别数据集
-
汉字选自常用的4900百多个汉字,基本涵盖(98%)了验证码可能会出现的字
-
可用作汉字识别分类训练
-
这里汉字集合自己找变成列表形式即可
-
这里面没有添加干扰点,你也可以自己添加干扰等
import json import os import re from PIL import Image, ImageDraw, ImageFont, ImageFilter import random class MakePic(object): ''' 自动生成汉字验证码,图片训练数据集 ''' def __init__(self): # 字体颜色 self.FontColor = ['#d3caeb','#b39bf2','#95b9db','#d1c297','#e6e6a6','#f5f5e2','#eded5a','#927acf','#a390d4','#bd93a5','#92cad4','#f2e7c6','#e8b2ca','#d9d9d9','#888491','#8932c3'] # 画布颜色 self.BackGroundColor = ['#1a122e','#3d363d','#666666','#588046','#30382d','#5d9ca6'] # 字体 self.font = ImageFont.truetype(r'../Font/msyhbd.ttc', random.choice([26,27])) # 汉字图片保存路径 self.root_path = r'E:\patent_yzm' # 汉字集合 ['你','好'] self.text = json.load(open('./text/hangzi.json','r',encoding='utf-8')) # 创建画布 def make_pic(self): # image_list = [Image.new('RGB', (self.width, self.height), i) for i in self.BackGroundColor] image_list = [] for i in self.BackGroundColor: # 画布大小长宽随机选择 image = Image.new('RGB', random.choice([(35,35),(34,34),(33,33),(31,31),(30,30)]), i) print(image) image_list.append(image) return image_list # 绘图保存 def draw(self,text): # 创建画布遍历 for image in self.make_pic(): pic_name_ = re.findall('at (.*?)>', str(image))[0] print(pic_name_) # 创建Draw对象: draw = ImageDraw.Draw(image) for color in self.FontColor: # 画字 draw.text((2, -5), text, font=self.font, fill=color) pic_name = pic_name_ + color + '_' + text + '.jpg' pic_path = self.root_path + '\\' + text + '\\' + pic_name print(pic_name) # 保存 image.save(pic_path) # 每个汉字创建一个文件夹 def make_dir(self): # 根据汉字集合目录 for i in self.text: dir_path = self.root_path + '\\' + i os.mkdir(dir_path) return True def run(self): flag = self.make_dir() print(flag) dir_name = os.listdir(self.root_path) for name in dir_name: self.draw(name) print(name) if __name__ == '__main__': MakePic().run()
-
效果图