Python Image Morpher (PIM) is a program that blends images to your content!
Python Image Morpher (PIM) is a program that can take two images and blend them to whatever extent or precision that you like! It is designed to emulate some of Python's OpenCV image processing from scratch without reference.
This project began in Spring 2019 (detailed in readme_general.pdf, readme_phase_1.pdf, and readme_phase_2.pdf), requiring the usage of delaunay triangulation, projective/affine transformation, application of projections through matrices, masking, and alpha blending - all of which are still maintained - in order to accomplish image morphing. Thus, this repository is more of a 'proof of concept' than it is the most efficient way of accomplishing the given task of image morphing.
So far, this program has only been tested on separate Windows environments; if it does not already, later releases are likely to support Mac and Linux.
This program has dependencies that do not come packaged with Python 3. To install the required modules, enter the following command using the terminal supplied by Windows or your choice of IDE (such as PyCharm):
pip install -r requirements.txt
Alternatively, for each module below that your machine does not have installed, enter the respective command(s):
PyQt5 - pip install pyqt5
SciPy - pip install scipy
NumPy - pip install numpy
Imageio - pip install imageio
Pynput - pip install pynput
OpenCV (Headless) - pip install opencv-python-headless
Requests - pip install requests
If pip, for whatever reason, is not installed on your machine, enter the following line in a terminal:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
Followed by this line afterwards:
python get-pip.py
A more detailed Help guide is included within PIM's GUI, if needed.
Proof of Concept - Perspective Shifting
Although I feel that PIM is now feature complete as a project, I will continue to support it with updates as they come to me. This potentially includes, but does not guarantee:
If you encounter an error, a bug, or if you simply wish to request a change/feature, please file an issue using the tracker that GitHub provides, here.
If you like what you see, feel free to contact me on LinkedIn or check out my website (WIP as time allows).