Spaces:
Sleeping
Sleeping
Upload app.py
Browse files
app.py
CHANGED
|
@@ -249,6 +249,9 @@ def draw_points_on_image(image, layer_manager):
|
|
| 249 |
# ============ UI FUNCTIONS ============
|
| 250 |
def create_new_layer(name, current_manager):
|
| 251 |
"""์ ๋ ์ด์ด ์์ฑ"""
|
|
|
|
|
|
|
|
|
|
| 252 |
if not name.strip():
|
| 253 |
return current_manager, create_layer_status_html(current_manager), gr.Dropdown(choices=[]), "Please enter a layer name"
|
| 254 |
|
|
@@ -325,6 +328,9 @@ def create_layer_status_html(current_manager):
|
|
| 325 |
|
| 326 |
def click_on_image(current_manager, image, point_mode, evt: gr.SelectData):
|
| 327 |
"""์ด๋ฏธ์ง ํด๋ฆญ ์ฒ๋ฆฌ - Include/Exclude ๋ชจ๋์ ๋ฐ๋ผ ํฌ์ธํธ ์ถ๊ฐ"""
|
|
|
|
|
|
|
|
|
|
| 328 |
if image is None or current_manager.current_layer_id is None:
|
| 329 |
return image, current_manager, create_layer_status_html(current_manager), "Please select image and layer"
|
| 330 |
|
|
@@ -349,6 +355,9 @@ def click_on_image(current_manager, image, point_mode, evt: gr.SelectData):
|
|
| 349 |
|
| 350 |
def segment_all_layers(current_manager, image, opacity, border_width):
|
| 351 |
"""๋ชจ๋ ๋ ์ด์ด๋ฅผ ์์๋๋ก ์ธ๊ทธ๋ฉํ
์ด์
์คํ"""
|
|
|
|
|
|
|
|
|
|
| 352 |
if image is None:
|
| 353 |
return None, current_manager, create_layer_status_html(current_manager), "Please upload an image", pd.DataFrame()
|
| 354 |
|
|
@@ -414,6 +423,9 @@ def segment_all_layers(current_manager, image, opacity, border_width):
|
|
| 414 |
|
| 415 |
def clear_current_layer(current_manager, image, opacity, border_width):
|
| 416 |
"""ํ์ฌ ๋ ์ด์ด ์ด๊ธฐํ"""
|
|
|
|
|
|
|
|
|
|
| 417 |
if current_manager.current_layer_id:
|
| 418 |
current_manager.clear_current_layer()
|
| 419 |
|
|
@@ -433,6 +445,9 @@ def clear_current_layer(current_manager, image, opacity, border_width):
|
|
| 433 |
|
| 434 |
def refresh_visualization(current_manager, image, opacity, border_width):
|
| 435 |
"""์๊ฐํ ์๋ก๊ณ ์นจ"""
|
|
|
|
|
|
|
|
|
|
| 436 |
if image is None:
|
| 437 |
return None, "Please upload an image", pd.DataFrame()
|
| 438 |
|
|
@@ -456,9 +471,6 @@ custom_css="""
|
|
| 456 |
# No custom JavaScript needed anymore
|
| 457 |
custom_js = ""
|
| 458 |
|
| 459 |
-
# ์ ์ญ ๋ ์ด์ด ๋งค๋์
|
| 460 |
-
layer_manager = LayerManager()
|
| 461 |
-
|
| 462 |
with gr.Blocks(css=custom_css) as demo:
|
| 463 |
with gr.Column(elem_id="col-container"):
|
| 464 |
gr.Markdown("# **SAM3 Layer Segmentation Tool**", elem_id="main-title")
|
|
@@ -505,7 +517,7 @@ with gr.Blocks(css=custom_css) as demo:
|
|
| 505 |
|
| 506 |
# ์ํ
|
| 507 |
status_text = gr.Textbox(label="Status", interactive=False)
|
| 508 |
-
st_layer_manager = gr.State(
|
| 509 |
point_mode_state = gr.State("positive") # "positive" or "negative"
|
| 510 |
|
| 511 |
with gr.Column(scale=2):
|
|
@@ -530,6 +542,9 @@ with gr.Blocks(css=custom_css) as demo:
|
|
| 530 |
|
| 531 |
# ๋ ์ด์ด ์ ํ
|
| 532 |
def on_layer_select(layer_id, mgr):
|
|
|
|
|
|
|
|
|
|
| 533 |
if layer_id:
|
| 534 |
mgr.set_current_layer(layer_id)
|
| 535 |
return mgr, create_layer_status_html(mgr), f"Layer '{mgr.layers[layer_id]['name']}' selected"
|
|
|
|
| 249 |
# ============ UI FUNCTIONS ============
|
| 250 |
def create_new_layer(name, current_manager):
|
| 251 |
"""์ ๋ ์ด์ด ์์ฑ"""
|
| 252 |
+
if current_manager is None:
|
| 253 |
+
current_manager = LayerManager()
|
| 254 |
+
|
| 255 |
if not name.strip():
|
| 256 |
return current_manager, create_layer_status_html(current_manager), gr.Dropdown(choices=[]), "Please enter a layer name"
|
| 257 |
|
|
|
|
| 328 |
|
| 329 |
def click_on_image(current_manager, image, point_mode, evt: gr.SelectData):
|
| 330 |
"""์ด๋ฏธ์ง ํด๋ฆญ ์ฒ๋ฆฌ - Include/Exclude ๋ชจ๋์ ๋ฐ๋ผ ํฌ์ธํธ ์ถ๊ฐ"""
|
| 331 |
+
if current_manager is None:
|
| 332 |
+
current_manager = LayerManager()
|
| 333 |
+
|
| 334 |
if image is None or current_manager.current_layer_id is None:
|
| 335 |
return image, current_manager, create_layer_status_html(current_manager), "Please select image and layer"
|
| 336 |
|
|
|
|
| 355 |
|
| 356 |
def segment_all_layers(current_manager, image, opacity, border_width):
|
| 357 |
"""๋ชจ๋ ๋ ์ด์ด๋ฅผ ์์๋๋ก ์ธ๊ทธ๋ฉํ
์ด์
์คํ"""
|
| 358 |
+
if current_manager is None:
|
| 359 |
+
current_manager = LayerManager()
|
| 360 |
+
|
| 361 |
if image is None:
|
| 362 |
return None, current_manager, create_layer_status_html(current_manager), "Please upload an image", pd.DataFrame()
|
| 363 |
|
|
|
|
| 423 |
|
| 424 |
def clear_current_layer(current_manager, image, opacity, border_width):
|
| 425 |
"""ํ์ฌ ๋ ์ด์ด ์ด๊ธฐํ"""
|
| 426 |
+
if current_manager is None:
|
| 427 |
+
current_manager = LayerManager()
|
| 428 |
+
|
| 429 |
if current_manager.current_layer_id:
|
| 430 |
current_manager.clear_current_layer()
|
| 431 |
|
|
|
|
| 445 |
|
| 446 |
def refresh_visualization(current_manager, image, opacity, border_width):
|
| 447 |
"""์๊ฐํ ์๋ก๊ณ ์นจ"""
|
| 448 |
+
if current_manager is None:
|
| 449 |
+
current_manager = LayerManager()
|
| 450 |
+
|
| 451 |
if image is None:
|
| 452 |
return None, "Please upload an image", pd.DataFrame()
|
| 453 |
|
|
|
|
| 471 |
# No custom JavaScript needed anymore
|
| 472 |
custom_js = ""
|
| 473 |
|
|
|
|
|
|
|
|
|
|
| 474 |
with gr.Blocks(css=custom_css) as demo:
|
| 475 |
with gr.Column(elem_id="col-container"):
|
| 476 |
gr.Markdown("# **SAM3 Layer Segmentation Tool**", elem_id="main-title")
|
|
|
|
| 517 |
|
| 518 |
# ์ํ
|
| 519 |
status_text = gr.Textbox(label="Status", interactive=False)
|
| 520 |
+
st_layer_manager = gr.State(None) # LayerManager๋ ํจ์ ๋ด์์ ์์ฑ
|
| 521 |
point_mode_state = gr.State("positive") # "positive" or "negative"
|
| 522 |
|
| 523 |
with gr.Column(scale=2):
|
|
|
|
| 542 |
|
| 543 |
# ๋ ์ด์ด ์ ํ
|
| 544 |
def on_layer_select(layer_id, mgr):
|
| 545 |
+
if mgr is None:
|
| 546 |
+
mgr = LayerManager()
|
| 547 |
+
|
| 548 |
if layer_id:
|
| 549 |
mgr.set_current_layer(layer_id)
|
| 550 |
return mgr, create_layer_status_html(mgr), f"Layer '{mgr.layers[layer_id]['name']}' selected"
|