/lenssort

Making some cool pfps 👩‍🎤

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

Lenssort

Using facial recognition and pixelsorting on images to create glitched, Snapchat-like lenses.

Utilizes pixelsort, another project I am involved in. Make sure to check it out!

Usage

With Docker:

git clone https://github.com/BernardZhao/lenssort.git
cd lenssort
docker-compose up
# Make sure to include the -o flag, previews won't show up in the container.
docker-compose run lenssort python -m lenssort examples/example1.jpg -m face -o example_result.png

Manually:

Requires Python 3.6 >=. Make sure you have dlib Python bindings installed!

git clone https://github.com/BernardZhao/lenssort.git
cd lenssort

# Can skip virtual environment if desired
python -m venv venv 
source venv/bin/activate

pip install -r requirements.txt

python -m lenssort %PathToImage% [mask_type] [params]

Mask types:

Mask name Description
eyes Sort the eyes.
face Sort the face, within the brows and chin.
shuffle Sort a polygon randomly generated over facial features.
censored Sort the eye area with a thick bar.
facemask Sort the area of the face under the eyes.
tears Sort tear-like lines below the eyes.

Parameters:

Parameter Flag Description
Invert -i Inverts the mask. May produce cool results.
Angle -a Sorting angle. Overrides internal default for the mask.
Output path -o File output path. Previews image if not provided.

Examples

python -m lenssort examples/example1.jpg -m face

example1_face_i_a90

python -m lenssort examples/example1.jpg -m face -i -a 90

example1_face_i_a90

python -m lenssort examples/example1.jpg -m eyes -i

example1_eyes_i

python -m lenssort examples/example3.jpg -m facemask

example1_eyes_i

python -m lenssort examples/example3.jpg -m shuffle

example1_eyes_i

python -m lenssort examples/example2.jpg -m censored

example1_eyes_i

Todo

  • Expose pixelsort args: sorting function, interval function, etc.
  • Validate mask: No out of bounds
  • Mask compositions: Ex: (face - eyes + ...)

And more masks ofc 😪