Spaces:
Runtime error
Runtime error
import gradio as gr | |
import numpy as np | |
import supervision as sv | |
from gradio.components import Image, Radio, Textbox | |
def plot_bounding_boxes(image, boxes, box_type): | |
if not boxes: | |
return image | |
bboxes = [] | |
for row in boxes.split("\n"): | |
x0, y0, x1, y1 = [int(float(i.split(".")[0])) for i in boxes.split(",")] | |
if box_type == "xywh": | |
x0 = x0 * image.size[0] | |
y0 = y0 * image.size[1] | |
x1 = x0 + (x1 * image.size[0]) | |
y1 = y0 + (y1 * image.size[1]) | |
bbox = [x0, y0, x1, y1] | |
bboxes.append(bbox) | |
detections = sv.Detections( | |
xyxy=np.array(bboxes), | |
class_id=np.array([0] * len(bboxes)), | |
confidence=np.array([1.0] * len(bboxes)), | |
) | |
image = np.array(image) | |
bounding_box_annotator = sv.BoundingBoxAnnotator(thickness=3) | |
annotated_image = bounding_box_annotator.annotate( | |
scene=image, detections=detections | |
) | |
return annotated_image | |
iface = gr.Interface( | |
fn=plot_bounding_boxes, | |
inputs=[ | |
Image(type="pil", label="Image"), | |
Textbox(label="Bounding Box (separate values by comma, like '100, 200, 300, 400')", lines=3), | |
Radio(["xyxy", "xywh"], label="Bounding Box Type"), | |
], | |
outputs=Image(type="pil"), | |
title="Plot Bounding Boxes", | |
description="Plot bounding boxes on an image. Useful for testing object detection models without writing bounding box code. Powered by [supervision](https://github.com/roboflow/supervision).", | |
) | |
iface.launch() | |