Spaces:
Sleeping
Sleeping
File size: 2,012 Bytes
b16e048 b32b2e9 a8cdc05 b16e048 b32b2e9 b16e048 a8cdc05 b32b2e9 b16e048 a8cdc05 30e115d a8cdc05 b32b2e9 b16e048 a8cdc05 b16e048 b32b2e9 a8cdc05 b32b2e9 a8cdc05 b16e048 b32b2e9 a8cdc05 b16e048 a8cdc05 b32b2e9 a8cdc05 b16e048 a8cdc05 |
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 50 51 52 53 54 55 56 57 58 59 60 |
import gradio as gr
import os
import shutil
import threading
import time
from PIL import Image
import numpy as np
from utils import verify_identity
registration_dir = "registered_users"
os.makedirs(registration_dir, exist_ok=True)
# Register user
def register_user(name, image):
if image is None or not name.strip():
return "❌ Please provide a name and webcam photo."
image = Image.fromarray(image.astype("uint8"))
user_path = os.path.join(registration_dir, name)
os.makedirs(user_path, exist_ok=True)
image.save(os.path.join(user_path, f"{name}_1.jpg"))
return f"✅ User '{name}' registered successfully."
# Webcam verify
def process_image(frame):
if frame is None:
return None, "No frame captured."
result = verify_identity(None, frame, registration_dir)
return frame, result
# Gradio UI
with gr.Blocks() as demo:
gr.Markdown("## 🧠 Real-Time Face Verification (FaceNet)")
with gr.Tab("👤 Register"):
name = gr.Textbox(label="Enter Your Name")
image = gr.Image(label="Capture Image")
register_btn = gr.Button("Register")
register_out = gr.Textbox(label="Status")
register_btn.click(fn=register_user, inputs=[name, image], outputs=register_out)
with gr.Tab("🔍 Live Verify"):
with gr.Row():
input_img = gr.Image(label="📸 Webcam", streaming=True, sources=["webcam"])
output_img = gr.Image(label="🧠 Output Frame")
result_text = gr.Textbox(label="Prediction", interactive=False)
input_img.stream(fn=process_image, inputs=input_img, outputs=[output_img, result_text])
def auto_cleanup(interval=600):
while True:
if os.path.exists(registration_dir):
shutil.rmtree(registration_dir)
os.makedirs(registration_dir)
print("🧹 Cleaned up registered_users/")
time.sleep(interval)
threading.Thread(target=auto_cleanup, daemon=True).start()
if __name__ == "__main__":
demo.launch() |