ScouterAI / tools /bbox_annotator.py
stevenbucaille's picture
Enhance image processing capabilities and update project structure
111afa2
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