mirror of
https://github.com/gradio-app/gradio.git
synced 2024-12-15 02:11:15 +08:00
5f25eb6836
* changes
* changes
* add changeset
* changes
* changes
* fix box changes on website
* add changeset
* changes
* changes
* Revert "changes"
This reverts commit 189b4e844a
.
* chanegs
* changes
* changes
* changes
* changes
* add changeset
* Update fancy-bats-deny.md
---------
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: aliabd <ali.si3luwa@gmail.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>
62 lines
2.0 KiB
Python
62 lines
2.0 KiB
Python
import gradio as gr
|
|
import numpy as np
|
|
import random
|
|
|
|
with gr.Blocks() as demo:
|
|
section_labels = [
|
|
"apple",
|
|
"banana",
|
|
"carrot",
|
|
"donut",
|
|
"eggplant",
|
|
"fish",
|
|
"grapes",
|
|
"hamburger",
|
|
"ice cream",
|
|
"juice",
|
|
]
|
|
|
|
with gr.Row():
|
|
num_boxes = gr.Slider(0, 5, 2, step=1, label="Number of boxes")
|
|
num_segments = gr.Slider(0, 5, 1, step=1, label="Number of segments")
|
|
|
|
with gr.Row():
|
|
img_input = gr.Image()
|
|
img_output = gr.AnnotatedImage(
|
|
color_map={"banana": "#a89a00", "carrot": "#ffae00"}
|
|
)
|
|
|
|
section_btn = gr.Button("Identify Sections")
|
|
selected_section = gr.Textbox(label="Selected Section")
|
|
|
|
def section(img, num_boxes, num_segments):
|
|
sections = []
|
|
for a in range(num_boxes):
|
|
x = random.randint(0, img.shape[1])
|
|
y = random.randint(0, img.shape[0])
|
|
w = random.randint(0, img.shape[1] - x)
|
|
h = random.randint(0, img.shape[0] - y)
|
|
sections.append(((x, y, x + w, y + h), section_labels[a]))
|
|
for b in range(num_segments):
|
|
x = random.randint(0, img.shape[1])
|
|
y = random.randint(0, img.shape[0])
|
|
r = random.randint(0, min(x, y, img.shape[1] - x, img.shape[0] - y))
|
|
mask = np.zeros(img.shape[:2])
|
|
for i in range(img.shape[0]):
|
|
for j in range(img.shape[1]):
|
|
dist_square = (i - y) ** 2 + (j - x) ** 2
|
|
if dist_square < r**2:
|
|
mask[i, j] = round((r**2 - dist_square) / r**2 * 4) / 4
|
|
sections.append((mask, section_labels[b + num_boxes]))
|
|
return (img, sections)
|
|
|
|
section_btn.click(section, [img_input, num_boxes, num_segments], img_output)
|
|
|
|
def select_section(evt: gr.SelectData):
|
|
return section_labels[evt.index]
|
|
|
|
img_output.select(select_section, None, selected_section)
|
|
|
|
if __name__ == "__main__":
|
|
demo.launch()
|