Implementation of image morphing with a web front-end. Images are uploaded, and the user selects corresponding points in the images.
Demo video: https://www.youtube.com/watch?v=S3hfBqrwQms
This was created for the CS 445 Spring 2020 Final Project at the University of Illinois at Urbana-Champaign. There are plenty of things that could be better but it works, and again this was for a school project!
Install the following pre-requisite software:
- Python 3
- Docker (only if building the Docker image)
- ImageMagick (only if running the test server locally)
To build only the Python packages:
$ pip install -r requirements.txt
$ make lib web
To build the Docker image:
$ make image
To build everything:
$ make all
Note that building all only makes sense if you intend to consume the Python packages directly. Otherwise simply building the Docker image will produce a portable distribution.
To run locally for testing:
$ export FLASK_APP=webmorphing; flask run
The UI will be available at http://localhost:5000.
A Docker image is also produced and can be run with the following command:
$ docker run -it -p 8080:8080 avojak/image-morphing:{version}
The UI will be available at http://localhost:8080.
- OpenCV - Image IO, computing affine transformations
- Scipy - Computing Delaunay triangulations
- Matplotlib - Creating plots
- ImageMagick - Producing the animated GIF
- Flask - Web server
- Bootstrap - Making a half-decent looking UI
- Docker - Portable distribution
- Cat: Matthew Kerslake on Unsplash
- Young Anakin: Comic Vine
- Old Anakin: Fandom
- Darth Vader: BGR