Converts Optical Flow .flo files to images .png and optionally compiles them to a video .mp4 via ffmpeg
Easiest option to install flowiz is to grab the latest package from PyPI repo
pip install flowiz -UAlternatively you may install the package directly from github repo
pip install git+https://github.com/georgegach/flowiz/Or you can run setup.py to build it yourself locally
git clone https://github.com/georgegach/flowiz.git
cd flowiz
python setup.py install --userMake sure you have requirements installed along with an ffmpeg to compile a video. requirements.txt contains latest working versions of this package. Feel free to use pip-upgrader.
pip install -r requirements.txt
apt install ffmpeg
# pacman -S ffmpegFirst dockerize cloned repo
git clone https://github.com/georgegach/flowiz.git
cd flowiz
docker build . -t myflowiz:latestThen launch the container with port 8000 exposed
docker run -it -p 8000:8000 myflowiz:latestFinally, fire up http://localhost:8000 in your favorite browserH
https://hub.docker.com/repository/docker/georgegach/flowiz
docker run -it -p 8000:8000 georgegach/flowiz:latestPackage can be used both from the command line and python script.
The following script grabs .flo files from ./demo/flo/ directory and converts into .png saving in the same directory
python -m flowiz demo/flo/*.floYou can pass output directory for .png images via -o or --outdir parameter
python -m flowiz demo/flo/*.flo --outdir demo/png/You may compile converted .png images into a 24 fps .mp4 clip by passing -v or --videodir parameter with a video output directory (without a filename)
python -m flowiz demo/flo/*.flo -o demo/png --videodir demo/mp4Pass -r or --framerate parameter to control the framerate of compiled video
python -m flowiz demo/flo/*.flo -o demo/png -v demo/mp4 --framerate 2Relevant python code is available in demo/test.ipynb notebook. Here's an excerpt:
import flowiz as fz
files = glob.glob('demo/flo/*.flo')
img = fz.convert_from_file(files[0])
plt.imshow(img)In case you need to visualize U V channels separately from your numpy floArray:
uv = fz.convert_from_flow(floArray, mode='UV')
axarr[0].imshow(uv[...,0], cmap=plt.get_cmap('binary'))
axarr[1].imshow(uv[...,1], cmap=plt.get_cmap('binary'))Beta version of the flowiz graphical user interface is now accessible via flowiz.gui package. It is packaged using ChrisKnott / Eel and available via default web browser. To run the GUI simply type:
python -m flowiz.guiUpon launching the web app, drag and drop or choose .flo file(s) using the open file dialog. Files will be converted using the python backend and placed in a temporary directory flowiz/gui/web/guitemp. Upon every session temporary directory will be emptied to avoid unnecessary polution.
Mockup of the GUI is available at georgegach.github.io/flowiz
$ python -m flowiz -h
usage: __main__.py [-h] [--outdir OUTDIR] [--videodir VIDEODIR]
[--framerate FRAMERATE]
input [input ...]
positional arguments:
input Input file(s). (e.g.: __ ./demo/flo/*.flo)
optional arguments:
-h, --help show this help message and exit
--outdir OUTDIR, -o OUTDIR
Output directory path. Default: same directory as
[.flo] files. (e.g.: __ -o ./demo/png/)
--videodir VIDEODIR, -v VIDEODIR
Compiles [.mp4] video from [.png] images if parameter
is passed. Parameter requires video output directory
path without a filename. (e.g.: __ -v ./demo/mp4/)
--framerate FRAMERATE, -r FRAMERATE
Frames per second of the video. (e.g.: __ -r 2)$ python -m flowiz.gui -h
usage: __main__.py [-h] [--mode MODE]
optional arguments:
-h, --help show this help message and exit
--mode MODE GUI engine: "chrome", "edge", "electron", "browser". Use "None" when working with Docker.The library is based on Midlebury's Vision Project MATLAB code: http://vision.middlebury.edu/flow/ Original credits to Daniel Scharstein (C++) and Deqing Sun (MATLAB)
Q: But what kind of name is
flowiz?
A: The kind you choose whenflowkit,flowtools,flowlib,flowlabare already taken.
Q: Future work?
A: Some of theTo-Dofeatures are listed below with no determined timeline. If you'd like to contribute with the said features or something completely new, you mayand issue a pull request.
- Ported from Matlab
flow_code - Project is available on PyPI
- Dockerized
- GUI
- Improve Front to Back-end throughput performance