Пример #1
0
    def classify(self, *args, **kwargs):
        """
        classify eye movement
        """

        if self.g_pool.app == "exporter":
            return

        utils.logger.info("Gaze postions changed. Recalculating.")

        if self.eye_movement_task and self.eye_movement_task.running:
            self.eye_movement_task.kill(grace_period=1)

        capture = model.Immutable_Capture(self.g_pool.capture)
        min_data_confidence = self.min_data_confidence
        gaze_data: utils.Gaze_Data = [
            gp.serialized for gp in self.g_pool.gaze_positions
            if gp["confidence"] > min_data_confidence
        ]

        self.eye_movement_task = worker.Offline_Detection_Task(
            args=(capture, gaze_data))
        self.task_manager.add_task(self.eye_movement_task)

        self.eye_movement_task.add_observers(
            on_started=self._on_task_started,
            on_yield=self._on_task_yield,
            on_completed=self._on_task_completed,
            on_ended=self._on_task_ended,
            on_exception=self._on_task_exception,
            on_canceled_or_killed=self._on_task_canceled_or_killed,
        )
        self.eye_movement_task.start()
    def recent_events(self, events):

        gaze_data = events["gaze"]
        capture = model.Immutable_Capture(self.g_pool.capture)

        min_data_confidence = self.min_data_confidence
        gaze_data = [
            datum for datum in gaze_data
            if datum["confidence"] > min_data_confidence
        ]

        self._buffered_detector.extend_gaze_data(gaze_data=gaze_data,
                                                 capture=capture)

        if "frame" not in events:
            return

        frame_timestamp = events["frame"].timestamp
        self._recent_segments = self._buffered_detector.segments_at_timestamp(
            frame_timestamp)

        public_segments = [
            segment.to_public_dict() for segment in self._recent_segments
        ]
        events[utils.EYE_MOVEMENT_EVENT_KEY] = public_segments