The idea came from this project by Spu7nix named obamify
You can check out the original project here
The idea revolves around taking a picture and transforming its pixels to match a target image (in the creator's case, Obama) as much as possible.
I saw this and I thought.. Why don't I make it more dynamic?
That's what made me do this project :)
It implements the same idea, but with a live feed camera instead, and it only applies on human faces. So it's more like a Snapchat filter.
So if it's basically a face filter, you could've done it in so much better ways!
Yeah, I know. But it's kinda funny this way, isn't it?
First you need to have:
- Rust toolchain (
rustup,cargo) - Python
- Virtual python env that has:
- OpenCV (for video processing)
- ultalytics (for YOLO)
- DearPyGUI (for app UI)
- PyTorch (for CUDA check)
- Maturin (for rust package)
You'll need to create a virtual environment
python -m venv .venv
source .venv/bin/activate
Then you'll need to install maturin command
pip install maturin
Then we're done! just to compile the package use maturin develop
This is just a straightforward pip command:
pip install python-opencv ultralytics dearpygui torch
| Name | Contribution |
|---|---|
| Abdulrahman Elkhayat | Implemented the core pixel-sorting optimization algorithm in Rust, built the GUI, and integrated the overall system components |
| Mohamed Eleraky | Trained and fine-tuned the YOLOv2 face detection model on the human face dataset |
| Malak Hisham | Developed the real-time transformation pipeline, handling per-frame processing in morphing logic |