From 8e5d0aec942fb9c49040fc525f0d697fd24d7c2f Mon Sep 17 00:00:00 2001 From: Christian Kolset Date: Thu, 7 May 2026 13:42:30 -0600 Subject: Added Motion Capture plugin Tracks a user-selected point via webcam (OpenCV CSRT tracker) and streams x_pos / y_pos pixel coordinates as live channels into the acquisition pipeline. Falls back to a Lissajous figure simulation when opencv-python is not installed, so the plugin works immediately without hardware. - tracker.py: background thread, real camera + sim modes, thread-safe API - device.py: BaseDevice reading x/y from tracker, wires into engine - filter.py: custom pixel_to_mm filter (registered in FILTER_CLASSES) - window.py: floating tool window, live feed, click-to-track ROI selection - plugin.py: LabPlugin wiring all pieces together, toolbar button, settings widget, profile save/restore Also: PluginAction.button_ref_callback lets plugins store a ref to their toolbar button so they can uncheck it when their window closes. opencv-python install note added to requirements.txt. Co-Authored-By: Claude Sonnet 4.6 --- plugins/motion_capture/manifest.json | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 plugins/motion_capture/manifest.json (limited to 'plugins/motion_capture/manifest.json') diff --git a/plugins/motion_capture/manifest.json b/plugins/motion_capture/manifest.json new file mode 100644 index 0000000..f1f10ce --- /dev/null +++ b/plugins/motion_capture/manifest.json @@ -0,0 +1,9 @@ +{ + "plugin_id": "motion_capture", + "name": "Motion Capture", + "version": "1.0.0", + "description": "Track a point via webcam and stream x/y position as live signals. Apply pixel_to_mm filter to convert to real-world units.", + "author": "LabDAQ", + "entry_point": "plugin.MotionCapturePlugin", + "requires": ["opencv-python>=4.8.0"] +} -- cgit v1.2.3