debug lines as param

This commit is contained in:
Ruben van de Ven 2025-10-17 17:05:39 +02:00
parent 1f07974466
commit e24e270a42
2 changed files with 18 additions and 7 deletions

View file

@ -57,6 +57,9 @@ class CvRenderer(Node):
self.tracks: Dict[str, Track] = {} self.tracks: Dict[str, Track] = {}
self.predictions: Dict[str, Track] = {} self.predictions: Dict[str, Track] = {}
self.scale = 100
self.debug_lines = debug_lines = load_lines_from_svg(self.config.debug_map, self.scale, '') if self.config.debug_map else []
def refresh_labels(self, dt: float): def refresh_labels(self, dt: float):
"""Every frame""" """Every frame"""
@ -185,7 +188,7 @@ class CvRenderer(Node):
# img = frame.camera.img_to_world(frame.img, 100) # img = frame.camera.img_to_world(frame.img, 100)
# cv2.imwrite(save_file, img) # cv2.imwrite(save_file, img)
img = decorate_frame(frame, tracker_frame, prediction_frame, first_time, self.config, self.tracks, self.predictions, self.detections, self.config.render_clusters) img = decorate_frame(frame, tracker_frame, prediction_frame, first_time, self.config, self.tracks, self.predictions, self.detections, self.config.render_clusters, self.debug_lines, self.scale)
logger.debug(f"write frame {frame.time - first_time:.3f}s") logger.debug(f"write frame {frame.time - first_time:.3f}s")
if self.out_writer: if self.out_writer:
@ -266,7 +269,10 @@ class CvRenderer(Node):
""", """,
type=str, type=str,
default=None) default=None)
render_parser.add_argument('--debug-map',
help='specify a map (svg-file) from which to load lines which will be overlayed',
type=str,
default="../DATASETS/hof3/map_hof.svg")
return render_parser return render_parser
# colorset = itertools.product([0,255], repeat=3) # but remove white # colorset = itertools.product([0,255], repeat=3) # but remove white
@ -298,8 +304,8 @@ def get_animation_position(track: Track, current_frame: Frame):
def decorate_frame(frame: Frame, tracker_frame: Frame, prediction_frame: Frame, first_time: float, config: Namespace, tracks: Dict[str, Track], predictions: Dict[str, Track], detections: Optional[List[Detection]], as_clusters = True) -> np.array: def decorate_frame(frame: Frame, tracker_frame: Frame, prediction_frame: Frame, first_time: float, config: Namespace, tracks: Dict[str, Track], predictions: Dict[str, Track], detections: Optional[List[Detection]], as_clusters = True, debug_lines = [], scale: float = 100) -> np.array:
scale = 100
# TODO: replace opencv with QPainter to support alpha? https://doc.qt.io/qtforpython-5/PySide2/QtGui/QPainter.html#PySide2.QtGui.PySide2.QtGui.QPainter.drawImage # TODO: replace opencv with QPainter to support alpha? https://doc.qt.io/qtforpython-5/PySide2/QtGui/QPainter.html#PySide2.QtGui.PySide2.QtGui.QPainter.drawImage
# or https://github.com/pygobject/pycairo?tab=readme-ov-file # or https://github.com/pygobject/pycairo?tab=readme-ov-file
# or https://pyglet.readthedocs.io/en/latest/programming_guide/shapes.html # or https://pyglet.readthedocs.io/en/latest/programming_guide/shapes.html
@ -359,7 +365,6 @@ def decorate_frame(frame: Frame, tracker_frame: Frame, prediction_frame: Frame,
inv_H = np.linalg.pinv(tracker_frame.H) inv_H = np.linalg.pinv(tracker_frame.H)
draw_track_projected(img, track, int(track_id), frame.camera, conversion) draw_track_projected(img, track, int(track_id), frame.camera, conversion)
debug_lines = load_lines_from_svg("../DATASETS/hof3/map_hof.svg", scale, '')
for line in debug_lines: for line in debug_lines:
for rp1, rp2 in zip(line.points, line.points[1:]): for rp1, rp2 in zip(line.points, line.points[1:]):
p1 = ( p1 = (

View file

@ -961,8 +961,10 @@ class Stage(Node):
self.counter = CounterSender() self.counter = CounterSender()
self.frame: Optional[Frame] = None self.frame: Optional[Frame] = None
if self.config.debug_map:
debug_color = SrgbaColor(0.,0.,1.,1.) debug_color = SrgbaColor(0.,0.,1.,1.)
self.debug_lines = RenderableLines(load_lines_from_svg("../DATASETS/hof3/map_hof.svg", 100, debug_color)) self.debug_lines = RenderableLines(load_lines_from_svg(self.config.debug_map, 100, debug_color))
def run(self): def run(self):
@ -1092,6 +1094,10 @@ class Stage(Node):
help='Manually specity communication addr for the stage messages (the rendered lines)', help='Manually specity communication addr for the stage messages (the rendered lines)',
type=str, type=str,
default="tcp://0.0.0.0:99174") default="tcp://0.0.0.0:99174")
argparser.add_argument('--debug-map',
help='specify a map (svg-file) from which to load lines which will be overlayed',
type=str,
default="../DATASETS/hof3/map_hof.svg")
return argparser return argparser