import gradio as gr from mtcnn.mtcnn import MTCNN import cv2 import numpy as np import json # Function to detect faces using MTCNN def detect_faces(image): # Convert image to RGB format image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) # Detect faces using MTCNN detector = MTCNN() faces = detector.detect_faces(image_rgb) # Extract and format face information formatted_faces = [{"x": face['box'][0], "y": face['box'][1], "width": face['box'][2], "height": face['box'][3]} for face in faces] # Draw bounding boxes around detected faces for face in faces: x, y, width, height = face['box'] cv2.rectangle(image, (x, y), (x + width, y + height), (255, 0, 0), 2) return image, json.dumps(formatted_faces) # Gradio Interface iface = gr.Interface( fn=detect_faces, inputs=gr.Image(type="numpy", label="Input Image"), outputs=[gr.Image(type="numpy", label="Output Image"), gr.Textbox(label="Face Coordinates")], live=True, title="MTCNN Face Detection", description="Detect faces in an image using MTCNN.", ) # Launch the Gradio Interface iface.launch(share=True) ###