-
Notifications
You must be signed in to change notification settings - Fork 1
/
get_data_for_train.py
90 lines (80 loc) · 2.37 KB
/
get_data_for_train.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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
from kivy.clock import Clock
from kivy.graphics.texture import Texture
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.image import Image
from kivymd.app import App
from kivymd.uix.gridlayout import GridLayout
import threading
import cv2 as cv
from eyes_move_detection import eyesMoveDetection
from tools import flip_camera, start_camera
eyes_gesture = [
(0, "look_down"),
(1, "look_up"),
(2, "close_eyes"),
(3, "no_action"),
]
WIDTH = 640
HEIGHT = 480
FREQ = 1.0 / 20.0
X1 = WIDTH / 2
Y1 = HEIGHT / 2
class MainApp(App):
frame = any
def build(self):
layout = GridLayout(
cols=1,
rows=2,
)
self.image = Image()
layout.add_widget(
self.image,
)
self.buttons_layout = BoxLayout(size_hint_y=0.2)
self.btn = []
for a in eyes_gesture:
self.btn.append(Button(text=a[1]))
self.btn[-1].bind(on_press=lambda x, a=a: self.capture_thread(a[0]))
self.buttons_layout.add_widget(self.btn[-1])
layout.add_widget(self.buttons_layout)
# Inicializar el video en hilo
self.capture = start_camera(
video_number=0, frame_rate=20, video_res=[WIDTH, HEIGHT]
)
Clock.schedule_interval(self.load_video_thread, FREQ)
self.eyes_m_d = eyesMoveDetection()
return layout
def load_video_thread(self, *args):
ret, self.frame = self.capture.read()
# buffer = flip_camera(self.frame, 3)
buffer = self.frame
# cv.line(
# buffer,
# (0, 240),
# (640, 240),
# (0, 255, 0),
# thickness=2,
# )
# cv.line(
# buffer,
# (320, 0),
# (320, 480),
# (0, 255, 0),
# thickness=2,
# )
buffer = cv.flip(buffer, 0).tobytes()
texture = Texture.create(
size=(self.frame.shape[1], self.frame.shape[0]),
colorfmt="bgr",
)
texture.blit_buffer(buffer, colorfmt="bgr", bufferfmt="ubyte")
self.image.texture = texture
def capture_thread(self, option: int):
t1 = threading.Thread(
target=self.eyes_m_d.save_gesture, args=(option, self.frame, FREQ)
)
t1.start()
if __name__ == "__main__":
app = MainApp()
app.run()