Newer
Older
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
#!/usr/bin/env python3.8
import tobii_research as tr
from utils import timestamp
from utils import sleep
import math
import csv
global all_data
all_data = []
class Recorder:
def __init__(self, tracker, filename="tmp.csv"):
self.tracker = tracker
self.tracker.subscribe_to(tr.EYETRACKER_GAZE_DATA,\
self.gaze_data_callback,\
as_dictionary=True)
self.filename = filename
self.continueToGet = True
def gaze_data_callback(self, gaze_data):
gaze_data['timestamp'] = timestamp()
"""Fonction qui est appelée à l'acquisition de chaque frame"""
if (gaze_data['left_gaze_point_validity'] == 1 and gaze_data['right_gaze_point_validity']):
gaze_data['x'] = round(
(gaze_data['left_gaze_point_on_display_area'][0] + gaze_data['right_gaze_point_on_display_area'][0]) / 2, 2)
gaze_data['y'] = round(
(gaze_data['left_gaze_point_on_display_area'][1] + gaze_data['right_gaze_point_on_display_area'][1]) / 2, 2)
elif (gaze_data['left_gaze_point_validity'] == 1 and gaze_data['right_gaze_point_validity'] == 0):
gaze_data['x'] = gaze_data['left_gaze_point_on_display_area'][0]
gaze_data['y'] = gaze_data['left_gaze_point_on_display_area'][1]
elif (gaze_data['left_gaze_point_validity'] == 0 and gaze_data['right_gaze_point_validity'] == 1):
gaze_data['x'] = gaze_data['right_gaze_point_on_display_area'][0]
gaze_data['y'] = gaze_data['right_gaze_point_on_display_area'][1]
else:
gaze_data['x'] = float("nan")
gaze_data['y'] = float("nan")
all_data.append([gaze_data["timestamp"], gaze_data["x"], gaze_data["y"]])
return
all_data.append([gaze_data["timestamp"], gaze_data["x"], gaze_data["y"]])
print([gaze_data["timestamp"], gaze_data["x"], gaze_data["y"]])
return
def finish(self):
print("Write data to file %s ...\n" % self.filename)
self.tracker.unsubscribe_from(tr.EYETRACKER_GAZE_DATA,\
self.gaze_data_callback)
with open(self.filename, 'w') as f:
writer = csv.writer(f)
writer.writerow(["Timestamp", "x", "y"])
for row in all_data:
if len(row) > 0:
writer.writerow(row)
print("Done.\n")
def record(tracker, filename="tmp.csv"):
recorder = Recorder(tracker, filename=filename)
while(recorder.continueToGet):
try:
sleep()
continue
except KeyboardInterrupt:
recorder.continueToGet = False
recorder.finish()