digiwild_bern / app /physical /physical_select_animal.py
katospiegel's picture
Upload 104 files
20bdfba verified
import gradio as gr
from dotenv import load_dotenv
import os
from typing import List
from shapely.geometry import Point
from physical.physical_checkbox import *
from physical.physical_boxes_define import gdf
from utils.utils_visible import set_visible
load_dotenv()
PATH_ASSETS = os.getenv('PATH_ASSETS')
# 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, section: str):
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']
checkbox_beak, text_beak, checkbox_body, text_body, checkbox_feathers, text_feathers, checkbox_head, text_head, checkbox_legs, text_legs = process_body_parts(section, matched_box)
else:
matched_box = None
checkbox_beak, text_beak, checkbox_body, text_body, checkbox_feathers, text_feathers, checkbox_head, text_head, checkbox_legs, text_legs = process_body_parts(section, matched_box)
return checkbox_beak, text_beak, checkbox_body, text_body, checkbox_feathers, text_feathers, checkbox_head, text_head, checkbox_legs, text_legs
# Gradio app
def create_bird_anatomy(visible, section: str):
# Draw bounding boxes on the image
print
img_with_boxes = gr.Image(value=PATH_ASSETS+'images/bird_boxed.png',
show_label=False,
height="600px",
elem_id=section,
visible=visible)
return img_with_boxes
def show_physical(choice, section: str):
visible = set_visible(choice)
physical_boxes = create_bird_anatomy(visible, section)
add_data_tmp("wounded_dead", "physical_radio", choice)
return physical_boxes