Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from ultralytics import YOLO | |
| import cv2 | |
| import numpy as np | |
| from PIL import Image | |
| # Load your YOLO model | |
| model = YOLO('best.pt') | |
| # Function for image prediction | |
| def predict_image(image): | |
| # Convert PIL image to OpenCV format (numpy array) | |
| image_cv = np.array(image) | |
| image_cv = cv2.cvtColor(image_cv, cv2.COLOR_RGB2BGR) # Convert to BGR format for YOLO | |
| # Perform inference | |
| results = model(image_cv) | |
| # Get the annotated image with bounding boxes | |
| annotated_image = results[0].plot() # Use the first result and plot annotations | |
| # Convert annotated image (BGR) back to RGB format for Gradio | |
| annotated_image_rgb = cv2.cvtColor(annotated_image, cv2.COLOR_BGR2RGB) | |
| return annotated_image_rgb | |
| # Function for webcam/live video | |
| def predict_webcam(frame): | |
| # Perform inference | |
| results = model(frame) | |
| # Get the annotated frame | |
| annotated_frame = results[0].plot() # Use the first result and plot annotations | |
| return annotated_frame | |
| # Create Gradio Interface | |
| iface = gr.Interface( | |
| fn=predict_image, # Function for image upload | |
| inputs=gr.Image(type="pil", label="Upload an Image"), # Image input | |
| outputs=gr.Image(type="numpy", label="Detected Image"), # Annotated output | |
| live=False, # Disable live video for image upload interface | |
| ) | |
| iface.launch() |