capjamesg's picture
update plotting code, fix data conversion bug
afa8f00
raw
history blame
1.4 kB
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
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])
detections = sv.Detections(
xyxy=np.array([[x0, y0, x1, y1]]),
class_id=np.array([0]),
confidence=np.array([1.0]),
)
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()