def exit(self): # do a bit of cleanup log.info("Stop video stream thread...") log.info("Exit app...") cv2.destroyAllWindows() return
def run(self): # loop over frames from the video stream log.info('Start application loop...') while True: run = self.dispatch_event() if not run: break self.update() self.show() self.exit()
def update_time(self): # Variable manage time (unit: second) self.t2 = round(time.time(), 5) self.t2 = round(self.t2 - self.t_run, 5) self.t = round(self.t2 - self.t0, 5) self.dt = round(self.t2 - self.t1, 5) self.clk_run = round(self.clk_run + self.dt, 5) log.info('t :', self.t, 'dt :', self.dt, 'clk_run :', self.clk_run) return
def dispatch_event(self): # get keys key = cv2.waitKey(1) & 0xFF # if the `q` key was pressed, break from the loop if key == ord('q'): log.info('Key Q press, quit application loop...') return False if key == ord('n'): log.info('Key N press, next update (' + str(self.update_cpt) + ') ...') self.updated = True return True
def update_with_time_acquisition(self): self.clear() log.info('update_with_time_acquisition') for i in range(self.t0_idx, len(self.sequence.times)): ti = self.sequence.times[i] ii = self.sequence.indices[i] t1_idx = i t1 = self.t0 + self.t_acquisition if ti >= t1: self.t0_idx = t1_idx self.t0 = self.sequence.times[self.t0_idx] break xi = ii % self.sequence.width yi = ii // self.sequence.width self.matrix[yi][xi] = 1 return
def update_finish(self): log.info('Fin de la sequence') if self.just_finished: self.clear() self.just_finished = False return