Skip to content

v1.5.0

Latest

Choose a tag to compare

@praneethnamburi praneethnamburi released this 23 May 16:34
· 7 commits to master since this release

Structural refactor: pointtracking.py (VideoPointAnnotator, VideoAnnotation, VideoAnnotations) and opticalflow.py (lucas_kanade, lucas_kanade_rstc) relocated to the dustrack package. datanavigator narrows to data-navigation primitives — browsers, asset managers, events; dustrack 1.2.0+ owns its DeepLabCut workflow + the labeling UI end-to-end. All portfolio consumers of dnav.VideoAnnotation / VideoPointAnnotator / lucas_kanade* flip to dustrack.* in lockstep; no transitional re-exports.

Highlights since v1.5.0a1

  • VideoReader(..., pix_fmt=None) auto-detects monochrome sources — gray-encoded videos decode directly as (H, W) 2D arrays instead of round-tripping through rgb24. ~6× faster sequential decode on 706×558 h265 mono; ~11.5× end-to-end through downstream gray-postprocess loops.
  • VideoReader.fname / .name exposed on the base class (previously only utils.Video carried them). Enables shared-reader patterns across multiple consumers.
  • _QtImagePane.get_view_state() / set_view_state(state) — opaque-blob round-trip of the QGraphicsView transform + scrollbar positions for snapshot/restore across context switches.
  • _QtImagePane.set_image() rebuilds scene rect on dimension change — fixes the "loaded video looks zoomed in" symptom when a per-frame set_image call gets an array with new dimensions.
  • Vendored PyAVReaderIndexed._seek_packet persistent demux iterator — lifts standalone sequential decode 185 → 268 fps on 720p 1-fpp h264.

Migration

Direct import datanavigator as dnav users of VideoAnnotation / VideoPointAnnotator / lucas_kanade* switch to dustrack:

```python
import dustrack

was: dnav.VideoAnnotation(json_path, video_path).to_signals()

ann = dustrack.VideoAnnotation(json_path, video_path)
signals = ann.to_signals()

was: dnav.VideoPointAnnotator(video, ["pn", "buffer"])

now use DUSTrack instead — direct VPA instantiation is being phased out:

v = dustrack.DUSTrack(video, ["pn", "buffer"])

was: dnav.lucas_kanade(video, start, end, init_points)

from dustrack import lucas_kanade
```

dustrack's datanavigator floor moves to >=1.5.0 so the two releases ship in lockstep.

Full changelog: CHANGELOG.md