digiwild / app /select_bird.py
vancauwe's picture
feat: bounding boxes on bird body
b092e67
raw
history blame
931 Bytes
import gradio as gr
# from gradio_image_prompter import ImagePrompter
from typing import List
from shapely.geometry import Point
from boxes_define import gdf
# Function to find the matching bounding box for a given point and return the image with boxes
def find_bounding_box(evt: gr.SelectData, img):
x, y = evt.index[0], evt.index[1]
point = Point(x, y)
match = gdf[gdf.contains(point)]
if not match.empty:
matched_box = match.iloc[0]['name']
else:
matched_box = "No bounding box found"
return matched_box
# Gradio app
with gr.Blocks() as demo:
# Draw bounding boxes on the image
img_with_boxes = gr.Image(value='assets/images/bird_boxed.png', label=None)
bbox_label = gr.Label()
img_with_boxes.select(find_bounding_box,
inputs=[img_with_boxes],
outputs=[bbox_label])
demo.launch(server_name="0.0.0.0")