Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/georgegach/flowiz
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:
https://github.com/georgegach/flowiz
converter flo flow image middlebury optical python video vision visualisation visualization
Last synced: about 2 months ago
JSON representation
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:
- Host: GitHub
- URL: https://github.com/georgegach/flowiz
- Owner: georgegach
- License: mit
- Created: 2018-09-19T02:50:12.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-10-03T23:44:21.000Z (about 1 year ago)
- Last Synced: 2024-11-03T13:06:22.526Z (about 2 months ago)
- Topics: converter, flo, flow, image, middlebury, optical, python, video, vision, visualisation, visualization
- Language: JavaScript
- Homepage: https://georgegach.github.io/flowiz
- Size: 43.9 MB
- Stars: 245
- Watchers: 9
- Forks: 32
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-starred-test - georgegach/flowiz - 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: (JavaScript)
README
Converts Optical Flow `.flo` files to images `.png` and optionally compiles them to a video `.mp4` via ffmpeg
- [Installation](#installation)
- [Usage](#usage)
- [Command line usage](#command-line-usage)
- [Python usage](#python-usage)
- [GUI usage](#gui-usage)
- [Help](#help)
- [Acknowledgements](#acknowledgements)
- [FAQ](#faq)
- [To-Do](#to-do)## Installation
### PyPIEasiest option to install `flowiz` is to grab the latest package from PyPI repo
```bash
pip install flowiz -U
```### pip + Github
Alternatively you may install the package directly from github repo```bash
pip install git+https://github.com/georgegach/flowiz/
```### Build yourself
Or you can run `setup.py` to build it yourself locally```bash
git clone https://github.com/georgegach/flowiz.git
cd flowiz
python setup.py install --user
```Make 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`.
```bash
pip install -r requirements.txt
apt install ffmpeg
# pacman -S ffmpeg
```### Docker
First dockerize cloned repo
```bash
git clone https://github.com/georgegach/flowiz.git
cd flowiz
docker build . -t myflowiz:latest
```Then launch the container with port 8000 exposed
```bash
docker run -it -p 8000:8000 myflowiz:latest
```Finally, fire up http://localhost:8000 in your favorite browserH
### Get it from DockerHub
https://hub.docker.com/repository/docker/georgegach/flowiz
```bash
docker run -it -p 8000:8000 georgegach/flowiz:latest
```## Usage
Package can be used both from the command line and python script.
### Command line usage
The following script grabs `.flo` files from `./demo/flo/` directory and converts into `.png` saving in the same directory
```bash
python -m flowiz demo/flo/*.flo
```You can pass output directory for `.png` images via `-o` or `--outdir` parameter
```bash
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)
```bash
python -m flowiz demo/flo/*.flo -o demo/png --videodir demo/mp4
```Pass `-r` or `--framerate` parameter to control the framerate of compiled video
```bash
python -m flowiz demo/flo/*.flo -o demo/png -v demo/mp4 --framerate 2
```### Python usage
Relevant python code is available in `demo/test.ipynb` notebook. Here's an excerpt:
```python
import flowiz as fzfiles = glob.glob('demo/flo/*.flo')
img = fz.convert_from_file(files[0])
plt.imshow(img)
```![Image](https://raw.githubusercontent.com/georgegach/flowiz/master/demo/png/frame_0001.flo.png)
In case you need to visualize `U V` channels separately from your numpy `floArray`:
```python
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'))
```![Image](https://raw.githubusercontent.com/georgegach/flowiz/master/demo/githubassets/uv_flows.png)
### GUI usage
Beta version of the `flowiz` graphical user interface is now accessible via `flowiz.gui` package. It is packaged using [ChrisKnott / Eel](https://github.com/ChrisKnott/Eel) and available via default web browser. To run the GUI simply type:
```bash
python -m flowiz.gui
```Upon 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](http://georgegach.github.io/flowiz)
![Demo Video](https://raw.githubusercontent.com/georgegach/flowiz/master/demo/githubassets/flowiz.demo.gif)
### Help
```bash
$ python -m flowiz -husage: __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)
``````bash
$ 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.
```## Acknowledgements
The library is based on Midlebury's Vision Project MATLAB code:
Original credits to Daniel Scharstein (C++) and Deqing Sun (MATLAB)## FAQ
> Q: But what kind of name is `flowiz`?
> A: The kind you choose when `flowkit`, `flowtools`, `flowlib`, `flowlab` are already taken.> Q: Future work?
> A: Some of the `To-Do` features are listed below with no determined timeline. If you'd like to contribute with the said features or something completely new, you may ![fork it](https://img.shields.io/github/forks/georgegach/flowiz.svg?label=fork%20it&style=social) and issue a pull request.## To-Do
- [x] Ported from Matlab `flow_code`
- [x] Project is available on PyPI
- [x] Dockerized
- [x] GUI
- [ ] Improve Front to Back-end throughput performance