Spaces:
Sleeping
Sleeping
import gradio as gr | |
import dlib | |
import cv2 | |
import numpy as np | |
# Load the pre-trained face detector and facial landmarks predictor | |
detector = dlib.get_frontal_face_detector() | |
predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat") # You'll need to download this file | |
# Function to detect eyes in the image | |
def detect_eyes(image): | |
image = cv2.imdecode(np.frombuffer(image.read(), np.uint8), -1) | |
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) | |
# Detect faces in the image | |
faces = detector(gray) | |
# Loop through detected faces | |
for face in faces: | |
landmarks = predictor(gray, face) | |
# Define regions of interest for left and right eyes | |
left_eye_region = [(36, 37, 38, 39, 40, 41)] | |
right_eye_region = [(42, 43, 44, 45, 46, 47)] | |
# Draw rectangles around eyes | |
for region in left_eye_region + right_eye_region: | |
for i in region: | |
x = landmarks.part(i).x | |
y = landmarks.part(i).y | |
cv2.circle(image, (x, y), 2, (0, 255, 0), -1) | |
# Encode the image back to bytes | |
_, buffer = cv2.imencode('.jpg', image) | |
return buffer.tobytes() | |
iface = gr.Interface(fn=detect_eyes, inputs=gr.Image(), outputs=gr.Image()) | |
iface.launch() | |