Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -369,12 +369,6 @@ def draw_mask(f, n, c, k, v, d, evt: gr.EventData):
|
|
369 |
else:
|
370 |
d["background"] = cv2.imread(masks[frame_selected]).astype(np.uint8)
|
371 |
|
372 |
-
#indices = np.arange(0,256) # List of all colors
|
373 |
-
#divider = np.linspace(0,255,n+1)[1] # we get a divider
|
374 |
-
#quantiz = np.int0(np.linspace(0,255,n)) # we get quantization colors
|
375 |
-
#color_levels = np.clip(np.int0(indices/divider),0,n-1) # color levels 0,1,2..
|
376 |
-
#palette = quantiz[color_levels]
|
377 |
-
|
378 |
bg = cv2.cvtColor(d["background"], cv2.COLOR_RGBA2GRAY)
|
379 |
gd = cv2.cvtColor(gradient, cv2.COLOR_RGBA2GRAY)
|
380 |
|
@@ -383,9 +377,15 @@ def draw_mask(f, n, c, k, v, d, evt: gr.EventData):
|
|
383 |
kernel = np.ones((k,k),np.float32)/(k*k)
|
384 |
mask = cv2.filter2D(mask,-1,kernel)
|
385 |
|
386 |
-
|
387 |
-
|
388 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
389 |
|
390 |
scale = 1
|
391 |
delta = 0
|
@@ -468,18 +468,20 @@ with gr.Blocks(css=css) as demo:
|
|
468 |
output_frame = gr.Gallery(label="Frames", preview=True, columns=8192, type="numpy")
|
469 |
output_switch = gr.Checkbox(label="Show depths")
|
470 |
output_switch.input(fn=switch_rows, inputs=[output_switch], outputs=[output_frame])
|
471 |
-
output_mask = gr.ImageEditor(layers=True, sources=None, type="numpy", interactive=True, transforms=(None,), eraser=gr.Eraser(), brush=gr.Brush(default_size=0, colors=['black', '#505050', '#a0a0a0', 'white']), elem_id="image_edit")
|
472 |
with gr.Accordion(label="Edge", open=False):
|
473 |
gradients = gr.Files(visible=False, value=['./gradient_large.png', './gradient.png', './gradient_small.png'])
|
474 |
levels = gr.Number(label="Color levels", value=16, maximum=32, minimum=2, step=1)
|
475 |
contour = gr.Number(label="Contour width", value=3, maximum=15, minimum=1, step=2)
|
476 |
kernel = gr.Number(label="Average", value=7, maximum=16, minimum=0, step=1)
|
477 |
-
|
|
|
|
|
478 |
<a href='#' id='selector' onclick='this.style.fontWeight=\"bold\";
|
479 |
document.body.appendChild(document.getElementById(\"select_cursor\"));
|
480 |
document.getElementById(\"image_edit\").getElementsByTagName(\"canvas\")[0].oncontextmenu = function(e){e.preventDefault();}
|
481 |
document.getElementById(\"image_edit\").getElementsByTagName(\"canvas\")[0].ondrag = function(e){e.preventDefault();}
|
482 |
-
|
483 |
document.getElementById(\"image_edit\").getElementsByTagName(\"canvas\")[0].onclick = function(e) {
|
484 |
var x = parseInt((e.clientX-e.target.getBoundingClientRect().x)*e.target.width/e.target.getBoundingClientRect().width);
|
485 |
var y = parseInt((e.clientY-e.target.getBoundingClientRect().y)*e.target.height/e.target.getBoundingClientRect().height);
|
@@ -492,12 +494,9 @@ with gr.Blocks(css=css) as demo:
|
|
492 |
var evt = document.createEvent(\"Event\");
|
493 |
evt.initEvent(\"input\", true, false);
|
494 |
document.getElementById(\"mouse\").getElementsByTagName(\"textarea\")[0].dispatchEvent(evt);
|
495 |
-
|
496 |
-
document.getElementById(\"select_cursor\").style.left = e.clientX-8 + \"px\";
|
497 |
-
document.getElementById(\"select_cursor\").style.top = e.clientY-8 + \"px\";
|
498 |
}
|
499 |
document.getElementById(\"image_edit\").getElementsByTagName(\"canvas\")[0].onpointermove = function(e) {
|
500 |
-
if (document.getElementById(\"
|
501 |
var x = parseInt((e.clientX-e.target.getBoundingClientRect().x)*e.target.width/e.target.getBoundingClientRect().width);
|
502 |
var y = parseInt((e.clientY-e.target.getBoundingClientRect().y)*e.target.height/e.target.getBoundingClientRect().height);
|
503 |
|
@@ -513,24 +512,22 @@ with gr.Blocks(css=css) as demo:
|
|
513 |
var evt = document.createEvent(\"Event\");
|
514 |
evt.initEvent(\"input\", true, false);
|
515 |
document.getElementById(\"mouse\").getElementsByTagName(\"textarea\")[0].dispatchEvent(evt);
|
516 |
-
|
517 |
-
document.getElementById(\"select_cursor\").style.left = e.clientX-8 + \"px\";
|
518 |
-
document.getElementById(\"select_cursor\").style.top = e.clientY-8 + \"px\";
|
519 |
}
|
520 |
}
|
521 |
document.getElementById(\"image_edit\").getElementsByTagName(\"canvas\")[0].onpointerdown = function(e) {
|
522 |
-
|
|
|
|
|
523 |
}
|
524 |
document.getElementById(\"image_edit\").getElementsByTagName(\"canvas\")[0].onpointerup = function(e) {
|
525 |
-
|
526 |
-
|
|
|
|
|
|
|
527 |
document.getElementById(\"mouse\").getElementsByTagName(\"textarea\")[0].value = \"[]\";
|
528 |
-
|
529 |
-
document.getElementById(\"select_cursor\").style.left = 0;
|
530 |
-
document.getElementById(\"select_cursor\").style.top = 0;
|
531 |
' title='Clear selection' style='text-decoration:none;color:white;'>[x] Clear selection</a>""")
|
532 |
-
mouse = gr.Textbox(elem_id="mouse", value="""[]""", interactive=False)
|
533 |
-
mouse.input(fn=draw_mask, inputs=[gradients, levels, contour, kernel, mouse, output_mask], outputs=[output_mask])
|
534 |
submit = gr.Button("Submit")
|
535 |
with gr.Column():
|
536 |
model_type = gr.Dropdown([("small", "vits"), ("base", "vitb"), ("large", "vitl")], type="value", value="vits", label='Model Type')
|
|
|
369 |
else:
|
370 |
d["background"] = cv2.imread(masks[frame_selected]).astype(np.uint8)
|
371 |
|
|
|
|
|
|
|
|
|
|
|
|
|
372 |
bg = cv2.cvtColor(d["background"], cv2.COLOR_RGBA2GRAY)
|
373 |
gd = cv2.cvtColor(gradient, cv2.COLOR_RGBA2GRAY)
|
374 |
|
|
|
377 |
kernel = np.ones((k,k),np.float32)/(k*k)
|
378 |
mask = cv2.filter2D(mask,-1,kernel)
|
379 |
|
380 |
+
indices = np.arange(0,256) # List of all colors
|
381 |
+
divider = np.linspace(0,255,n+1)[1] # we get a divider
|
382 |
+
quantiz = np.int0(np.linspace(0,255,n)) # we get quantization colors
|
383 |
+
color_levels = np.clip(np.int0(indices/divider),0,n-1) # color levels 0,1,2..
|
384 |
+
palette = quantiz[color_levels]
|
385 |
+
|
386 |
+
#for i in range(n):
|
387 |
+
# bg[(bg >= i*255/n) & (bg < (i+1)*255/n)] = i*255/(n-1)
|
388 |
+
bg = cv2.convertScaleAbs(palette[bg]).astype(np.uint8) # Converting image back to uint
|
389 |
|
390 |
scale = 1
|
391 |
delta = 0
|
|
|
468 |
output_frame = gr.Gallery(label="Frames", preview=True, columns=8192, type="numpy")
|
469 |
output_switch = gr.Checkbox(label="Show depths")
|
470 |
output_switch.input(fn=switch_rows, inputs=[output_switch], outputs=[output_frame])
|
471 |
+
output_mask = gr.ImageEditor(layers=True, sources=None, type="numpy", interactive=True, show_progress='hidden', transforms=(None,), eraser=gr.Eraser(), brush=gr.Brush(default_size=0, colors=['black', '#505050', '#a0a0a0', 'white']), elem_id="image_edit")
|
472 |
with gr.Accordion(label="Edge", open=False):
|
473 |
gradients = gr.Files(visible=False, value=['./gradient_large.png', './gradient.png', './gradient_small.png'])
|
474 |
levels = gr.Number(label="Color levels", value=16, maximum=32, minimum=2, step=1)
|
475 |
contour = gr.Number(label="Contour width", value=3, maximum=15, minimum=1, step=2)
|
476 |
kernel = gr.Number(label="Average", value=7, maximum=16, minimum=0, step=1)
|
477 |
+
mouse = gr.Textbox(elem_id="mouse", value="""[]""", interactive=False)
|
478 |
+
mouse.input(fn=draw_mask, inputs=[gradients, levels, contour, kernel, mouse, output_mask], outputs=[output_mask])
|
479 |
+
selector = gr.HTML(value="""
|
480 |
<a href='#' id='selector' onclick='this.style.fontWeight=\"bold\";
|
481 |
document.body.appendChild(document.getElementById(\"select_cursor\"));
|
482 |
document.getElementById(\"image_edit\").getElementsByTagName(\"canvas\")[0].oncontextmenu = function(e){e.preventDefault();}
|
483 |
document.getElementById(\"image_edit\").getElementsByTagName(\"canvas\")[0].ondrag = function(e){e.preventDefault();}
|
484 |
+
|
485 |
document.getElementById(\"image_edit\").getElementsByTagName(\"canvas\")[0].onclick = function(e) {
|
486 |
var x = parseInt((e.clientX-e.target.getBoundingClientRect().x)*e.target.width/e.target.getBoundingClientRect().width);
|
487 |
var y = parseInt((e.clientY-e.target.getBoundingClientRect().y)*e.target.height/e.target.getBoundingClientRect().height);
|
|
|
494 |
var evt = document.createEvent(\"Event\");
|
495 |
evt.initEvent(\"input\", true, false);
|
496 |
document.getElementById(\"mouse\").getElementsByTagName(\"textarea\")[0].dispatchEvent(evt);
|
|
|
|
|
|
|
497 |
}
|
498 |
document.getElementById(\"image_edit\").getElementsByTagName(\"canvas\")[0].onpointermove = function(e) {
|
499 |
+
if (document.getElementById(\"mouse\").getElementsByTagName(\"textarea\")[0].style.borderColor != \"#ffffff\") {
|
500 |
var x = parseInt((e.clientX-e.target.getBoundingClientRect().x)*e.target.width/e.target.getBoundingClientRect().width);
|
501 |
var y = parseInt((e.clientY-e.target.getBoundingClientRect().y)*e.target.height/e.target.getBoundingClientRect().height);
|
502 |
|
|
|
512 |
var evt = document.createEvent(\"Event\");
|
513 |
evt.initEvent(\"input\", true, false);
|
514 |
document.getElementById(\"mouse\").getElementsByTagName(\"textarea\")[0].dispatchEvent(evt);
|
|
|
|
|
|
|
515 |
}
|
516 |
}
|
517 |
document.getElementById(\"image_edit\").getElementsByTagName(\"canvas\")[0].onpointerdown = function(e) {
|
518 |
+
|
519 |
+
document.getElementById(\"mouse\").getElementsByTagName(\"textarea\")[0].style.borderColor = \"#a0a0a0\";
|
520 |
+
|
521 |
}
|
522 |
document.getElementById(\"image_edit\").getElementsByTagName(\"canvas\")[0].onpointerup = function(e) {
|
523 |
+
|
524 |
+
document.getElementById(\"mouse\").getElementsByTagName(\"textarea\")[0].style.borderColor = \"#ffffff\";
|
525 |
+
|
526 |
+
}' title='Select point' style='text-decoration:none;color:white;'>⬚ Select point</a> <a href='#' id='clear_select' onclick='
|
527 |
+
|
528 |
document.getElementById(\"mouse\").getElementsByTagName(\"textarea\")[0].value = \"[]\";
|
529 |
+
|
|
|
|
|
530 |
' title='Clear selection' style='text-decoration:none;color:white;'>[x] Clear selection</a>""")
|
|
|
|
|
531 |
submit = gr.Button("Submit")
|
532 |
with gr.Column():
|
533 |
model_type = gr.Dropdown([("small", "vits"), ("base", "vitb"), ("large", "vitl")], type="value", value="vits", label='Model Type')
|