diff options
author | Théo de la Hogue | 2022-11-25 12:58:20 +0100 |
---|---|---|
committer | Théo de la Hogue | 2022-11-25 12:58:20 +0100 |
commit | a9e44d6a3c91a9945a540310f575a955f6a4e020 (patch) | |
tree | 0457190970a6fba4ece3e6ddae3e858ab6e8b660 /src | |
parent | 1c79530b7a1e0f8cf9bb83586f0a6e2067c2ed72 (diff) | |
download | argaze-a9e44d6a3c91a9945a540310f575a955f6a4e020.zip argaze-a9e44d6a3c91a9945a540310f575a955f6a4e020.tar.gz argaze-a9e44d6a3c91a9945a540310f575a955f6a4e020.tar.bz2 argaze-a9e44d6a3c91a9945a540310f575a955f6a4e020.tar.xz |
Improving fixation and saccade drawing.
Diffstat (limited to 'src')
-rw-r--r-- | src/argaze/utils/tobii_segment_gaze_movements_export.py | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/src/argaze/utils/tobii_segment_gaze_movements_export.py b/src/argaze/utils/tobii_segment_gaze_movements_export.py index b61c323..1ffc836 100644 --- a/src/argaze/utils/tobii_segment_gaze_movements_export.py +++ b/src/argaze/utils/tobii_segment_gaze_movements_export.py @@ -180,35 +180,39 @@ def main(): current_fixation_time_counter = 0 current_saccade_ts, current_saccade = ts_saccades.pop_first() - + # Iterate on video frames for video_ts, video_frame in tobii_segment_video.frames(): - # Draw current fixation - if len(ts_fixations) > 0: + # While current time belongs to the current fixation + if video_ts >= current_fixation_ts and video_ts < current_fixation_ts + current_fixation.duration: - if video_ts > current_fixation_ts + current_fixation.duration: + current_fixation_time_counter += 1 - current_fixation_ts, current_fixation = ts_fixations.pop_first() - current_fixation_time_counter = 1 + # Draw current fixation + cv.circle(video_frame.matrix, (int(current_fixation.centroid[0]), int(current_fixation.centroid[1])), int(current_fixation.dispersion), (0, 255, 0), current_fixation_time_counter) - # Draw saccade - if len(ts_saccades) > 0: + # Check next fixation + elif video_ts >= current_fixation_ts + current_fixation.duration and len(ts_fixations) > 0: - if video_ts > current_saccade_ts + current_saccade.duration: + current_fixation_ts, current_fixation = ts_fixations.pop_first() + current_fixation_time_counter = 0 - current_saccade_ts, current_saccade = ts_saccades.pop_first() - start_ts, start_position = current_saccade.positions.pop_first() - end_ts, end_position = current_saccade.positions.pop_first() + # While current time belongs to the current saccade + if video_ts >= current_saccade_ts and current_fixation_time_counter == 0: - cv.line(video_frame.matrix, start_position, end_position, (0, 0, 255), 2) + start_ts, start_position = current_saccade.positions.first + end_ts, end_position = current_saccade.positions.last - else: + # Draw saccade + cv.line(video_frame.matrix, start_position, end_position, (0, 0, 255), 2) - current_fixation_time_counter += 1 + # Check next saccade + elif video_ts >= current_saccade_ts + current_saccade.duration and len(ts_saccades) > 0: - cv.circle(video_frame.matrix, (int(current_fixation.centroid[0]), int(current_fixation.centroid[1])), int(current_fixation.dispersion), (0, 255, 0), current_fixation_time_counter) + current_saccade_ts, current_saccade = ts_saccades.pop_first() + # Check next gaze try: # Get closest gaze position before video timestamp and remove all gaze positions before |