手写数字生成
import random
import os
from PIL import Image, ImageDraw, ImageFont
random.seed(3)
path_img = "data/"
def generate_single():
im_50_blank = Image.new('RGB', (50, 50), (255, 255, 255))
draw = ImageDraw.Draw(im_50_blank)
num = str(random.randint(0, 10))
font = ImageFont.truetype('msjh.ttc', 20)
draw.text(xy=(18, 11), font=font, text=num, fill=(0, 0, 0))
random_angle = random.randint(-10, 10)
im_50_rotated = im_50_blank.rotate(random_angle)
params = [1 - float(random.randint(1, 2)) / 100,
0,
0,
0,
1 - float(random.randint(1, 10)) / 100,
float(random.randint(1, 2)) / 500,
0.001,
float(random.randint(1, 2)) / 500]
im_50_transformed = im_50_rotated.transform((50, 50), Image.PERSPECTIVE, params)
im_30 = im_50_transformed.crop([12, 12, 40, 40])
return im_30, num
def generate_0to9(n):
cnt_num = []
for i in range(10):
cnt_num.append(0)
for m in range(0, n):
im, generate_num = generate_single()
im_gray = im.convert('L')
for j in range(0, 10):
if generate_num == str(j):
cnt_num[j] = cnt_num[j] + 1
print("result:", path_img + str(j) + "_" + str(cnt_num[j]) + ".png")
im_gray.save(path_img + str(j) + "_" + str(cnt_num[j]) + ".png")
generate_0to9(1)
自动建立目录函数
def set_root():
if not os.path.exists(path_img):
os.mkdir(path_img)
说明
使用前请先建立一个目录存储图片,如果嫌麻烦加上自动建立目录函数即可,generate_0to9(参数),参数等于图片数量。
参考:https://github.com/coneypo/Generate_handwritten_number
定制数据集
需要定义特定字符的数据集可以私聊