Files
spyjacobandClaude Opus 5.5 8852ec9bdd Fast path: one LK call pair per camera, corner search on the hand's box
Cuts the fast tracker's CPU time with two hands by ~45% (x86 replay of a
synthetic two-hand sequence: 8.6 -> 4.6 ms/frame; one hand 3.8 -> 3.1 ms).
Not yet run on the headset.

- all hands seen by a camera are tracked in one forward + one backward
  calcOpticalFlowPyrLK call instead of one pair per hand: nearly all of a
  call's cost is rebuilding both images' pyramids, whatever the number of
  points
- texture points for a new seed are searched on the hand's bounding box
  instead of the whole 640x640 image (goodFeaturesToTrack cost ~3 ms per
  seed, ~26 seeds/s with two hands)
- both give bit-identical results to the previous code: old vs new
  FastTracker compared frame by frame (outputs and all internal state) on
  16 synthetic two-hand sequences with seeds, recoveries, losses, flow-v2
  and flow-agree on/off; tools/test_fasttrack.py checks both shortcuts on
  any OpenCV build (run it on the headset)
- fix: a seed made on a frame skipped for heat (>= 90 C) was carried to the
  skipped frame while the tracker continued from the frame before it;
  seeds now land on the frame the tracker last processed (no change on
  normal frames)
- fix: MediaPipe runs/s and hands/run in the log were only counted with
  telemetry on
- prebuilt pyramids cannot be passed to calcOpticalFlowPyrLK from Python
  (OpenCV 5.0 rejects them); sharing them across calls still needs a C++
  tracker

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QF7BH2bLYErqzDokq2fvj3
2026-10-16 23:37:21 -07:00
..
2026-10-11 04:16:01 -07:00