From ac124d6a44277fbeea27b149e46823db322b7665 Mon Sep 17 00:00:00 2001 From: Q Date: Wed, 10 Nov 2021 22:10:28 +0200 Subject: [PATCH] added more movement keys --- tsmark/__init__.py | 2 +- tsmark/video_annotator.py | 47 ++++++++++++++++++++++++++++++--------- 2 files changed, 38 insertions(+), 11 deletions(-) diff --git a/tsmark/__init__.py b/tsmark/__init__.py index 02fd797..9818552 100644 --- a/tsmark/__init__.py +++ b/tsmark/__init__.py @@ -1,7 +1,7 @@ from tsmark.video_annotator import Marker import argparse -VERSION = "0.3" +VERSION = "0.4" def get_options(): diff --git a/tsmark/video_annotator.py b/tsmark/video_annotator.py index 6c35a2a..52f3023 100755 --- a/tsmark/video_annotator.py +++ b/tsmark/video_annotator.py @@ -185,17 +185,17 @@ class Marker: def get_help(self): return """Keyboard help: - (Note: after mouse click, arrows stop working due to unknown bug: use j,k) - Arrows left and right, Home, End or click mouse in position bar - j and k - jump in video. Tap frequently to increase time step + (Note: after mouse click, arrows stop working due to unknown bug: use j,l,i,k) + Arrows, PgUp, PgDn, Home, End or click mouse in position bar + j,l,i,k,[,] + jump in video position , and . move one frame at a time z and c move to previous or next mark x or double click in the video mark frame space or click video pause - i toggle HUD + v toggle HUD q or esc quit """ @@ -313,6 +313,9 @@ class Marker: def loop(self): self.step = 1 + self.bigstep = 30 + self.hugestep = 300 + self.auto_step = False self.last_move = [] self.video_reader.set(cv2.CAP_PROP_POS_FRAMES, self.nr) @@ -348,6 +351,7 @@ class Marker: if k & 0xFF == 32: # space self.paused = not self.paused + # Movement ================= if k & 0xFF == 80: # home key self.nr = -1 self.read_next = True @@ -357,21 +361,41 @@ class Marker: self.paused = True self.read_next = True - if k & 0xFF == 83 or k & 0xFF == ord("k"): # right arrow + if k & 0xFF == 85 or k & 0xFF == ord("]"): # pg up + self.nr = int((nr_time + self.hugestep) * self.fps) - 1 + self.read_next = True + if k & 0xFF == 86 or k & 0xFF == ord("["): # pg down + self.nr = int((nr_time - self.hugestep) * self.fps) - 1 + self.read_next = True + + + if k & 0xFF == 82 or k & 0xFF == ord("i"): # up arrow + self.nr = int((nr_time + self.bigstep) * self.fps) - 1 + self.read_next = True + if k & 0xFF == 84 or k & 0xFF == ord("k"): # down arrow + self.nr = int((nr_time - self.bigstep) * self.fps) - 1 + self.read_next = True + + + if k & 0xFF == 83 or k & 0xFF == ord("l"): # right arrow self.last_move.append(("r", time.time())) if self.auto_step: self.calculate_step() self.nr = int((nr_time + self.step) * self.fps) - 1 self.read_next = True - if k & 0xFF == ord("."): - self.paused = True - self.read_next = True + if k & 0xFF == 81 or k & 0xFF == ord("j"): # left arrow self.last_move.append(("l", time.time())) if self.auto_step: self.calculate_step() self.nr = int((nr_time - self.step) * self.fps) - 1 self.read_next = True + + + # Move by frame + if k & 0xFF == ord("."): + self.paused = True + self.read_next = True if k & 0xFF == ord(","): self.paused = True self.nr -= 2 @@ -390,15 +414,18 @@ class Marker: self.read_next = True break + # Toggling ================= + if k & 0xFF == ord("x"): # toggle ts self.toggle_stamp() - if k & 0xFF == ord("i"): + if k & 0xFF == ord("v"): self.show_info = not self.show_info if k & 0xFF == ord("h"): self.print_help() self.show_help = not self.show_help + if (not self.paused) or self.read_next: self.nr += 1 if self.nr < 0: