|
|
import gradio as gr |
|
|
import numpy as np |
|
|
|
|
|
def get_mask(im): |
|
|
""" |
|
|
im: ImageEditor 返回的数据结构 |
|
|
""" |
|
|
layers = im.get("layers", []) |
|
|
if not layers: |
|
|
return "No drawing yet" |
|
|
|
|
|
|
|
|
layer0 = layers[0] |
|
|
mask = layer0 > 0 |
|
|
|
|
|
coords = np.argwhere(mask) |
|
|
print("Mask shape:", mask.shape) |
|
|
print("Number of drawn pixels:", np.sum(mask)) |
|
|
print("Coordinates of drawn pixels (y, x):", coords) |
|
|
|
|
|
return mask[...,3].astype(np.uint8)*255 |
|
|
|
|
|
with gr.Blocks() as demo: |
|
|
with gr.Row(): |
|
|
im_editor = gr.ImageEditor(type="numpy", crop_size="1:1") |
|
|
mask_preview = gr.Image() |
|
|
|
|
|
im_editor.change(get_mask, inputs=im_editor, outputs=mask_preview) |
|
|
|
|
|
if __name__ == "__main__": |
|
|
demo.launch() |
|
|
|