-
Notifications
You must be signed in to change notification settings - Fork 0
/
csv_to_images.py
57 lines (44 loc) · 1.66 KB
/
csv_to_images.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
'''
This script creates 3-channel gray images from FER 2013 dataset.
It has been done so that the CNNs designed for RGB images can
be used without modifying the input shape.
This script requires two command line parameters:
1. The path to the CSV file
2. The output directory
It generates the images and saves them in three directories inside
the output directory - Training, PublicTest, and PrivateTest.
These are the three original splits in the dataset.
'''
import os
import csv
import argparse
import numpy as np
import imageio
parser = argparse.ArgumentParser()
parser.add_argument('-f', '--file', required=True, help="path of the csv file")
parser.add_argument('-o', '--output', required=True, help="path of the output directory")
args = parser.parse_args()
w, h = 48, 48
image = np.zeros((h, w), dtype=np.uint8)
id = 1
with open(args.file) as csvfile:
datareader = csv.reader(csvfile, delimiter =',')
next(datareader,None)
for row in datareader:
emotion = row[0]
pixels = row[1].split()
usage = row[2]
pixels_array = np.asarray(pixels, dtype=np.int)
image = pixels_array.reshape(w, h)
#print image.shape
stacked_image = np.dstack((image,) * 3)
#print stacked_image.shape
image_folder = os.path.join(args.output, usage)
if not os.path.exists(image_folder):
os.makedirs(image_folder)
image_file = os.path.join(image_folder , str(id)+'_'+emotion+'.jpg')
imageio.imwrite(image_file, stacked_image)
id += 1
if id % 100 == 0:
print('Processed {} images'.format(id))
print("Finished processing {} images".format(id))