|
|
import gradio as gr |
|
|
from gradio_image_annotation import image_annotator |
|
|
import time |
|
|
import numpy as np |
|
|
import random |
|
|
|
|
|
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) |
|
|
} |
|
|
] |
|
|
} |
|
|
|
|
|
example_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) |
|
|
} |
|
|
] |
|
|
} |
|
|
|
|
|
|
|
|
def run(annotations): |
|
|
while True: |
|
|
w = 1920 |
|
|
|
|
|
h = 1080 |
|
|
img = np.random.random((h, w, 3)) |
|
|
yield { |
|
|
"image": img |
|
|
} |
|
|
time.sleep(1) |
|
|
|
|
|
def run2(annotations): |
|
|
while True: |
|
|
w = 1920 |
|
|
|
|
|
h = 1080 |
|
|
img = np.random.random((h, w, 3)) |
|
|
yield img |
|
|
time.sleep(1) |
|
|
|
|
|
with gr.Blocks() as demo: |
|
|
with gr.Row(): |
|
|
annotator = image_annotator( |
|
|
example_crop, |
|
|
image_type="numpy", |
|
|
) |
|
|
image = gr.Image() |
|
|
button = gr.Button() |
|
|
button.click(run, annotator, annotator) |
|
|
button2 = gr.Button() |
|
|
button2.click(run2, image, image) |
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
demo.launch() |
|
|
|