Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

comments and indentation changes #16

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 29 additions & 14 deletions PyFry.py
Original file line number Diff line number Diff line change
@@ -1,34 +1,44 @@
import cv2
from PIL import Image, ImageOps, ImageEnhance
import os
from utils.utils import Colors
from imutils import face_utils
import dlib
import tkinter as tk
from PIL import Image, ImageOps, ImageEnhance
from utils.utils import Colors
from imutils import face_utils
from tkinter import filedialog

'''
TODO: -> Compressing (Crushing) and back (to increase noise) :: DONE
-> Applying Red and Orange hue filters for classic deep fry look :: DONE
-> Detecting eye coordinates and applying the deepfry eye flare in the center::DONE

'''

def userInput():
#Allowing user to choose the image that has to be deepfried
root = tk.Tk()
up-and-structure-issue12
'''
Allowing user to choose the image that has to be deepfried
'''
root =tk.Tk()
root.withdraw()
global filepath
filepath = list(root.tk.splitlist(filedialog.askopenfilenames(title="PyFry - Choose Image")))
print("picture location = ",filepath)


def irisCoords(eye):
#Finding the center point of the eye using the average outer extremes average of the eyes
'''
Finding the center point of the eye using the average outer extremes average of the eyes
'''
mid = (eye[0] +eye[3])/2
mid = (int(mid[0]), int(mid[1]))
return mid


def generateHue(img):
#Generating and increasing prominency of red band of the image
'''
Generating and increasing prominency of red band of the image
'''
img = img.convert('RGB')
red = img.split()[0] #(R,G,B)
red = ImageEnhance.Contrast(red).enhance(2.0)
Expand All @@ -39,6 +49,7 @@ def generateHue(img):
img = ImageEnhance.Sharpness(img).enhance(150)
return img


def crushAndBack(img):
img = img.convert('RGB')
w,h = img.width, img.height
Expand All @@ -47,20 +58,23 @@ def crushAndBack(img):
img = img.resize((int(w ** .90), int(h ** .90)), resample = Image.BICUBIC)
img = img.resize((w,h), resample = Image.BICUBIC)
return img


def addFlare(img):
''' Initialising dlib for frontal facial features '''
'''
Initialising dlib for frontal facial features
'''

flare = Image.open('flare.png')
detect = dlib.get_frontal_face_detector()
predict = dlib.shape_predictor("assets\shape_predictor_68_face_landmarks.dat")

(lS, lE) = face_utils.FACIAL_LANDMARKS_68_IDXS["left_eye"]
(rS, rE) = face_utils.FACIAL_LANDMARKS_68_IDXS["right_eye"]


imgCV = cv2.imread('test.jpg')
#imgCV = cv2.imread('test2.jpg')


gray = cv2.cvtColor(imgCV, cv2.COLOR_BGR2GRAY)
subjects = detect(gray, 0)

Expand All @@ -69,6 +83,7 @@ def addFlare(img):
shape = face_utils.shape_to_np(shape)
leftEye = shape[lS:lE]
rightEye = shape[rS:rE]

'''
Assigning an area to paste the flare png Using the coordinates given by the Dlib module
ln,rn is the distance between the top left and bottom right of the iris multiplied by 4.
Expand All @@ -87,16 +102,16 @@ def addFlare(img):
print("Area for left eye",rec0,rec1)
print("Area for right eye",rec2,rec3)

""" Area Assignment for left eye and right eye"""
#Area Assignment for left eye and right eye
areaLeft=(rec0[0],rec0[1],rec1[0],rec1[1])
areaRight=(rec2[0],rec2[1],rec3[0],rec3[1])

""" Resizing the flare image to fit the area"""
#Resizing the flare image to fit the area
flareLeft=flare.resize((rec1[0]-rec0[0],rec1[1]-rec0[1]))
flareRight=flare.resize((rec3[0]-rec2[0],rec3[1]-rec2[1]))

"""Pasting the flare image on the area.
Third parameter is an alpha channel that provides transparency for the png"""
#Pasting the flare image on the area.
#Third parameter is an alpha channel that provides transparency for the png
img.paste(flareLeft,areaLeft,flareLeft)
img.paste(flareRight,areaRight,flareRight)
return img
Expand Down