Skip to content

Instantly share code, notes, and snippets.

@papr
Last active October 21, 2019 10:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save papr/7d84267e9e1284b5763ac3afb1732494 to your computer and use it in GitHub Desktop.
Save papr/7d84267e9e1284b5763ac3afb1732494 to your computer and use it in GitHub Desktop.
import logging
from pathlib import Path
import cv2
from datetime import datetime
from pupil_recording import PupilRecording
from plugin import Plugin
logger = logging.getLogger(__name__)
class Clock(Plugin):
def __init__(self, g_pool):
super().__init__(g_pool)
recording = PupilRecording(g_pool.rec_dir)
self.synced = recording.meta_info.start_time_synced_s
self.system = recording.meta_info.start_time_system_s
logger.info(f"Synced: {self.synced}")
logger.info(f"System: {self.system}")
def recent_events(self, events):
if "frame" in events:
frame = events["frame"]
pupil_time = frame.timestamp
clock_time = self.clock_time(pupil_time)
date_time = self.datetime(clock_time)
self.draw_time(frame.img, date_time)
def clock_time(self, pupil_time):
return pupil_time - self.synced + self.system
@staticmethod
def datetime(time_in_seconds):
return datetime.utcfromtimestamp(time_in_seconds).strftime("%Y-%m-%d %H:%M:%S")
@staticmethod
def draw_time(frame, time):
frame_txt_font_name = cv2.FONT_HERSHEY_SIMPLEX
frame_txt_font_scale = 1.0
frame_txt_thickness = 1
# first line: frame index
frame_txt = str(time)
frame_txt_size = cv2.getTextSize(
frame_txt, frame_txt_font_name, frame_txt_font_scale, frame_txt_thickness
)[0]
frame_txt_loc = (
frame.shape[0] // 2 - frame_txt_size[0] // 2,
frame.shape[1] // 2 - frame_txt_size[1],
)
cv2.putText(
frame,
frame_txt,
frame_txt_loc,
frame_txt_font_name,
frame_txt_font_scale,
(255, 255, 255),
thickness=frame_txt_thickness,
lineType=cv2.LINE_8,
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment