【发布时间】:2021-08-27 05:03:03
【问题描述】:
我想准备一个用于识别英文字母数字字符的数据集。我想训练我的深度学习模型来识别字符。图像大小应为 32 * 32 或 28 * 28。字符应随图像的高度和宽度缩放。下面给出的是预期的输出。
Character "A" scaled with the Image
我尝试过 getsize(),但我无法使用图像大小缩放字符。
from PIL import Image, ImageDraw, ImageFont
import os,glob
import numpy as np
import random
parentPath=r"CaptchaDataset\\"
charactersList=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9']
fontTypes=[]
for font in glob.glob("fonts\\*"): # Create Image for every font
fontTypes.append(os.path.abspath(font))
for index,character in enumerate(charactersList):
path=os.path.join(parentPath,character+"_"+str(index))
os.mkdir(path)
for imageCounter in range(len(fontTypes)):
for repeats in range(3): #Number of Images
img = Image.new('1', (28, 28), color = 'black')
fnt = ImageFont.truetype(fontTypes[imageCounter], random.randint(30,50))
w,h=fnt.getsize(character)
d = ImageDraw.Draw(img)
d.text(((28-w)/2-5,((28-h)/2)-5), character, font=fnt, fill=(255),align="center") #TO ALIGN CHARACTER IN CENTER
img=np.pad(img,pad_width=10, mode='constant', constant_values=0) #Manually added padding
img=Image.fromarray(img)
img.save(path+"\\"+str(imageCounter)+"_"+str(repeats)+".jpg")
【问题讨论】:
-
我会把角色画在一张大图上,然后裁剪成你想要的尺寸。
标签: python image image-processing deep-learning dataset