from PIL import Image, ImageFont, ImageDraw
import emoji
import random
from csv import writer
// Chosen 5 emojis - 5 classes
emotions = {1:':grinning_face:', 2:':loudly_crying_face:',3:':astonished_face:', 4:':winking_face:',5:':face_with_medical_mask:'}
// Different sizes
f = [25,20,28,30,32]
n = 0
// Generation of 1000 Images
for i in range(1000):
elem = [0,0,0,0,0]
lab_loc = {}
num = random.randint(1,3)
img = Image.new('RGB', (64, 64), color='white')
d = ImageDraw.Draw(img)
// Different Locations
loc = [[(0,0),(30,0),(30,30)],[(0,10),(20,30),(40,20)]]
e = [1, 2, 3, 4, 5]
binary_emo = []
for j in range(num):
val = random.choice(f)
l = random.randint(0,1)
font = ImageFont.truetype("C:/Users/U S Matharu/Downloads/Symbola/Symbola_hint.ttf", val)
emo_num = random.choice(e)
e.remove(emo_num)
elem[emo_num-1] = 1
emo = str(emoji.emojize(emotions[emo_num]))
d.text(loc[l][j],emo,(0,0,0), font=font)
lab_loc[emotions[emo_num][1:-1]] = [loc[l][j],val,emo_num]
binary_emo.append(emotions[emo_num])
img.save('test'+str(i)+'.png','PNG')
// To generate the CSV file for the model
l = 1
location_data = [0,0,0,0,0]
for k,v in lab_loc.items():
location_data[v[2]-1] = l
l += 1
labels = []
for b in binary_emo:
labels.append(b[1:-1])
with open('locations.csv', 'a+', newline='') as write_obj:
csv_writer = writer(write_obj)
list_elem = ['test'+str(i)+'.png',labels,location_data[0],location_data[1],location_data[2], location_data[3],location_data[4]]
csv_writer.writerow(list_elem)
n += 1