Spaces:
Sleeping
Sleeping
File size: 1,636 Bytes
fee9a0e e8e6842 fee9a0e e8e6842 5fe54c5 9381ccb e8e6842 5fe54c5 e8e6842 5fe54c5 e8e6842 5fe54c5 9381ccb e8e6842 9381ccb 5fe54c5 e8e6842 9381ccb e8e6842 9381ccb 5fe54c5 e8e6842 5fe54c5 e8e6842 5fe54c5 e8e6842 5fe54c5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
import cv2
import imutils
import gradio as gr
import numpy as np
# ✅ Use OpenCV’s built-in Haar Cascade path (no local folder needed)
face_detector = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")
def detect_faces(img, size, neighbours, scale):
frame = np.array(img)
frame = frame[:, :, ::-1].copy()
frame = imutils.resize(frame, width=500)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# ✅ Use slider values safely
faceRects = face_detector.detectMultiScale(
gray,
scaleFactor=float(scale),
minNeighbors=int(neighbours),
minSize=(int(size), int(size))
)
for (x, y, w, h) in faceRects:
cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 0, 0), 2)
re_im = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
return re_im
# ✅ Define Gradio components
image = gr.Image(label="Upload an Image")
out_im = gr.Image(label="Detected Faces")
size_slider = gr.Slider(minimum=5, maximum=50, value=30, step=5, label="Min Face Size (pixels)")
neighbour_slider = gr.Slider(minimum=1, maximum=20, value=5, step=1, label="Min Neighbours")
scale_slider = gr.Slider(minimum=1.1, maximum=2.0, value=1.3, step=0.1, label="Scale Factor")
# ✅ Gradio Interface
demo = gr.Interface(
fn=detect_faces,
inputs=[image, size_slider, neighbour_slider, scale_slider],
outputs=out_im,
title="Haar Cascade Face Detection",
description="Detect faces using OpenCV's Haar Cascade classifier. Adjust parameters to fine-tune detection."
)
# ✅ Hugging Face needs this to run the app
if __name__ == "__main__":
demo.launch()
|