Spaces:
Running
Running
import gradio as gr | |
from gradio_image_annotation import image_annotator | |
example_annotation = { | |
"image": "https://gradio-builds.s3.amazonaws.com/demo-files/base.png", | |
"boxes": [ | |
{ | |
"xmin": 636, | |
"ymin": 575, | |
"xmax": 801, | |
"ymax": 697, | |
"label": "Vehicle", | |
"color": (255, 0, 0) | |
}, | |
{ | |
"xmin": 360, | |
"ymin": 615, | |
"xmax": 386, | |
"ymax": 702, | |
"label": "Person", | |
"color": (0, 255, 0) | |
} | |
] | |
} | |
examples_crop = [ | |
{ | |
"image": "https://raw.githubusercontent.com/gradio-app/gradio/main/guides/assets/logo.png", | |
"boxes": [ | |
{ | |
"xmin": 30, | |
"ymin": 70, | |
"xmax": 530, | |
"ymax": 500, | |
"color": (100, 200, 255), | |
} | |
], | |
}, | |
{ | |
"image": "https://gradio-builds.s3.amazonaws.com/demo-files/base.png", | |
"boxes": [ | |
{ | |
"xmin": 636, | |
"ymin": 575, | |
"xmax": 801, | |
"ymax": 697, | |
"color": (255, 0, 0), | |
}, | |
], | |
}, | |
] | |
def crop(annotations): | |
if annotations["boxes"]: | |
box = annotations["boxes"][0] | |
return annotations["image"][ | |
box["ymin"]:box["ymax"], | |
box["xmin"]:box["xmax"] | |
] | |
return None | |
def get_boxes_json(annotations): | |
return annotations["boxes"] | |
with gr.Blocks() as demo: | |
with gr.Tab("Object annotation", id="tab_object_annotation"): | |
annotator = image_annotator( | |
example_annotation, | |
label_list=["Person", "Vehicle"], | |
label_colors=[(0, 255, 0), (255, 0, 0)], | |
) | |
button_get = gr.Button("Get bounding boxes") | |
json_boxes = gr.JSON() | |
button_get.click(get_boxes_json, annotator, json_boxes) | |
with gr.Tab("Crop", id="tab_crop"): | |
with gr.Row(): | |
annotator_crop = image_annotator( | |
examples_crop[0], | |
image_type="numpy", | |
disable_edit_boxes=True, | |
single_box=True, | |
) | |
image_crop = gr.Image() | |
button_crop = gr.Button("Crop") | |
button_crop.click(crop, annotator_crop, image_crop) | |
gr.Examples(examples_crop, annotator_crop) | |
if __name__ == "__main__": | |
demo.launch() | |