自动生成汉字验证码,用于汉字识别数据集

生成汉字验证码,用于汉字识别数据集

  • 汉字选自常用的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()
    
  • 效果图

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hxC8ZaqC-1637220979227)(%E8%87%AA%E5%8A%A8%E7%94%9F%E6%88%90%E6%B1%89%E5%AD%97%E9%AA%8C%E8%AF%81%E7%A0%81%EF%BC%8C%E7%94%A8%E4%BA%8E%E6%B1%89%E5%AD%97%E8%AF%86%E5%88%AB%E6%95%B0%E6%8D%AE%E9%9B%86.assets/image-20211118153232445.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zcGGC2GY-1637220979230)(%E8%87%AA%E5%8A%A8%E7%94%9F%E6%88%90%E6%B1%89%E5%AD%97%E9%AA%8C%E8%AF%81%E7%A0%81%EF%BC%8C%E7%94%A8%E4%BA%8E%E6%B1%89%E5%AD%97%E8%AF%86%E5%88%AB%E6%95%B0%E6%8D%AE%E9%9B%86.assets/image-20211118153316320.png)]

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小帆芽芽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值