Spaces:
Running
Running
import supervision as sv | |
from smolagents import AgentImage, Tool | |
class BBoxAnnotatorTool(Tool): | |
name = "bbox_annotator" | |
description = """ | |
Given an image and a list of detections, draw the bounding boxes on the image. | |
The image is a PIL image. | |
The detections are an object of type supervision.Detections. You can use the task_inference_output_converter tool to obtain the proper format for the detections. | |
The output is the image with the bounding boxes drawn on it. | |
""" | |
inputs = { | |
"image": { | |
"type": "image", | |
"description": "The image to draw the bounding boxes on", | |
}, | |
"detections": { | |
"type": "object", | |
"description": """ | |
The detections to annotate on the image. | |
The detections are an object of type supervision.Detections. | |
You can use the task_inference_output_converter tool to obtain the proper format for the detections. | |
""", | |
}, | |
"thickness": { | |
"type": "number", | |
"description": "The thickness of the bounding boxes.", | |
"default": 5, | |
"nullable": True, | |
}, | |
} | |
output_type = "image" | |
def __init__(self): | |
super().__init__() | |
def forward( | |
self, | |
image: AgentImage, | |
detections: sv.Detections, | |
thickness: int = 5, | |
): | |
box_annotator = sv.BoxAnnotator(thickness=thickness) | |
annotated_image = box_annotator.annotate(scene=image, detections=detections) | |
return annotated_image | |