Skip to content

georgegach/flowiz

Repository files navigation

flowiz

The optical flow visualization toolkit.
Read any flow format · render publication-quality color maps · compute error maps · compile videos · or just drag-drop into the browser viewer.

CI Pages deploy Coverage

PyPI Python versions Downloads License Viewer

🌀 Try the browser viewer — no install, no upload, works offline · 📚 Docs


Capabilities

  • Reads every format.flo (Middlebury), KITTI 16-bit PNG, .pfm (Sintel), .npy/.npz, Spring .flo5, and PyTorch tensors — all through one fz.read.
  • Publication-quality color maps — Baker/Middlebury color wheel, bit-compatible (±1 LSB) with flow_vis; UV, magnitude and angle encodings; embedded color-wheel legend.
  • Temporally consistent video — sequence-wide normalization for flicker-free MP4/WebM/GIF, no ffmpeg install required.
  • Evaluation built in — per-pixel EPE, KITTI Fl-score, error-map heatmaps, and one-call compare_grid paper figures.
  • Vector overlays — quiver arrows on the color map or any background frame.
  • Fast & scriptable — vectorized colorization, multiprocess batch conversion, a flowiz CLI, and typed numpy-in/numpy-out APIs.
  • Browser viewer — drag-drop any flow file (or click a shipped example) at georgegach.github.io/flowiz; everything runs client-side.

Install

pip install flowiz -U        # batteries included: video, CLI, plotting
pip install flowiz[torch]    # + torch tensor helpers
pip install flowiz[spring]   # + Spring .flo5 (HDF5) reading

Quick start

import flowiz as fz

flow = fz.read("frame_0001.flo")     # .flo, KITTI .png, .pfm, .npy, tensors — auto-detected
img  = fz.colorize(flow)             # (H, W, 3) uint8 RGB, Middlebury color wheel

# straight from a model
pred = fz.from_tensor(model(x))      # torch tensor -> Flow
fz.compare_grid(pred, gt, save="figure.png")   # pred | ground truth | EPE — a paper figure in one call

Example

Command line

flowiz convert 'flows/*.flo' -o out/ --workers 8      # batch -> PNGs
flowiz video   'flows/*.flo' -o flow.mp4 -r 24        # flicker-free video (shared normalizer)
flowiz info    frame_0001.flo                         # header + magnitude stats
flowiz compare pred.flo gt.flo --save grid.png        # EPE / Fl-score
flowiz view                                           # open the offline browser viewer

Browser viewer

Drag flow files onto georgegach.github.io/flowiz — or click a built-in example (a real 5-frame sequence plus synthetic rotation/zoom/wave fields) — and inspect them per-pixel: u, v, magnitude and angle on hover, WebGL2 rendering, adjustable normalization, a color-wheel key in the side panel, PNG export, and movie playback of multi-frame sequences with a play/pause button and fps control. Everything runs client-side; your files never leave the machine.

Documentation

Citing flowiz

If flowiz helped your research or figures, a citation is appreciated (it's requested, not required — the MIT license asks nothing):

@software{gach_flowiz,
  author  = {Giorgi Gachechiladze},
  title   = {flowiz: the optical flow visualization toolkit},
  url      = {https://github.com/georgegach/flowiz},
  version = {3.0.0},
  year    = {2026}
}

See CITATION.cff. Upgrading from v2? See MIGRATION.md.

Acknowledgements

Based on the Middlebury Vision Project color coding — original credits to Daniel Scharstein (C++) and Deqing Sun (MATLAB): http://vision.middlebury.edu/flow/.

License

MIT © Giorgi Gachechiladze

About

Converts Optical Flow files to images and optionally compiles them to a video. Flow viewer GUI is also available. Check out mockup right from Github Pages:

Topics

Resources

License

Stars

251 stars

Watchers

7 watching

Forks

Packages

 
 
 

Contributors