-
Notifications
You must be signed in to change notification settings - Fork 1
/
EXTRACT_DATA.py
67 lines (61 loc) · 2.13 KB
/
EXTRACT_DATA.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
58
59
60
61
62
63
64
65
66
67
import cv2
import mediapipe as mp
import pandas as pd
import os
import numpy as np
def image_processed(file_path):
hand_img = cv2.imread(file_path)
img_rgb = cv2.cvtColor(hand_img, cv2.COLOR_BGR2RGB)
img_flip = cv2.flip(img_rgb, 1)
mp_hands = mp.solutions.hands
hands = mp_hands.Hands(static_image_mode=True,
max_num_hands=2, min_detection_confidence=0.75)
output = hands.process(img_flip)
hands.close()
try:
data = output.multi_hand_landmarks[0]
data = str(data)
data = data.strip().split('\n')
garbage = ['landmark {', ' visibility: 0.0', ' presence: 0.0', '}']
without_garbage = []
for i in data:
if i not in garbage:
without_garbage.append(i)
clean = []
for i in without_garbage:
i = i.strip()
clean.append(i[2:])
for i in range(0, len(clean)):
clean[i] = float(clean[i])
return([clean])
except:
return(np.zeros([1,63], dtype=int)[0])
def make_csv():
mypath = 'E:/mediapipe_obj_detect/dataset/asl_alphabet_train/nothing'
file_name = open('nothing.csv', 'a')
for each_folder in os.listdir(mypath):
if '._' in each_folder:
pass
else:
for each_number in os.listdir(mypath + '/' + each_folder):
if '._' in each_number:
pass
else:
label = each_folder
file_loc = mypath + '/' + each_folder + '/' + each_number
data = image_processed(file_loc)
try:
for i in data:
file_name.write(str(i))
file_name.write(',')
file_name.write(label)
file_name.write('\n')
except:
file_name.write('0')
file_name.write(',')
file_name.write('None')
file_name.write('\n')
file_name.close()
print('Data Created !!!')
if __name__ == "__main__":
make_csv()