Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -338,11 +338,10 @@ def switch_rows(v):
|
|
338 |
|
339 |
def draw_mask(ksize, th, v, d, evt: gr.EventData):
|
340 |
print(v)
|
341 |
-
vv =
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
h = int(vv[3])
|
346 |
|
347 |
img = cv2.cvtColor(d["background"], cv2.COLOR_RGB2GRAY)
|
348 |
rows, cols = img.shape
|
@@ -368,7 +367,8 @@ def draw_mask(ksize, th, v, d, evt: gr.EventData):
|
|
368 |
#abs_grad_y = cv2.convertScaleAbs(grad_y)
|
369 |
|
370 |
#grad = cv2.addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 0)
|
371 |
-
bw = cv2.cvtColor(cv2.threshold(255-img_back, th, 255, cv2.THRESH_BINARY)[1], cv2.COLOR_GRAY2RGB)
|
|
|
372 |
|
373 |
d["background"] = bw
|
374 |
d["composite"] = bw
|
@@ -428,45 +428,27 @@ with gr.Blocks(css=css) as demo:
|
|
428 |
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")
|
429 |
ksize = gr.Slider(label="Kernel", value=128, minimum=0, maximum=1024, step=1)
|
430 |
threshold = gr.Slider(label="Threshold", value=128, minimum=0, maximum=255, step=1)
|
431 |
-
selector = gr.HTML(value="""<
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
document.
|
436 |
-
document.getElementById(\"image_edit\").getElementsByTagName(\"canvas\")[0].onpointerdown = function(e) {
|
437 |
var x = parseInt((e.clientX-e.target.getBoundingClientRect().x)*e.target.width/e.target.getBoundingClientRect().width);
|
438 |
var y = parseInt((e.clientY-e.target.getBoundingClientRect().y)*e.target.height/e.target.getBoundingClientRect().height);
|
439 |
-
document.getElementById(\"mousedown\").value = x + y / 10000;
|
440 |
|
441 |
-
document.getElementById(\"
|
442 |
-
|
443 |
-
|
444 |
-
document.getElementById(\"
|
445 |
-
|
446 |
-
document.getElementById(\"image_edit\").getElementsByTagName(\"canvas\")[0].onpointerup = function(e) {
|
447 |
-
var x = parseInt((e.clientX-e.target.getBoundingClientRect().x)*e.target.width/e.target.getBoundingClientRect().width);
|
448 |
-
var y = parseInt((e.clientY-e.target.getBoundingClientRect().y)*e.target.height/e.target.getBoundingClientRect().height);
|
449 |
-
document.getElementById(\"mouseup\").value = x + y / 10000;
|
450 |
-
|
451 |
-
var x0 = parseInt(document.getElementById(\"mousedown\").value);
|
452 |
-
var x1 = parseInt(document.getElementById(\"mouseup\").value);
|
453 |
-
var y0 = parseInt((parseFloat(document.getElementById(\"mousedown\").value)-x0)*10000);
|
454 |
-
var y1 = parseInt((parseFloat(document.getElementById(\"mouseup\").value)-x1)*10000);
|
455 |
-
var x = Math.min(x0, x1);
|
456 |
-
var y = Math.min(y0, y1);
|
457 |
-
var w = Math.max(x0, x1)-x;
|
458 |
-
var h = Math.max(y0, y1)-y;
|
459 |
-
document.getElementById(\"select_frame\").style.left = e.target.getBoundingClientRect().x + x/e.target.width*e.target.getBoundingClientRect().width + \"px\";
|
460 |
-
document.getElementById(\"select_frame\").style.width = w/e.target.width*e.target.getBoundingClientRect().width + \"px\";
|
461 |
-
document.getElementById(\"select_frame\").style.top = e.target.getBoundingClientRect().y + y/e.target.height*e.target.getBoundingClientRect().height + \"px\";
|
462 |
-
document.getElementById(\"select_frame\").style.height = h/e.target.height*e.target.getBoundingClientRect().height + \"px\";
|
463 |
-
|
464 |
-
document.getElementById(\"mouse\").getElementsByTagName(\"textarea\")[0].value = x + \", \" + y + \", \" + w + \", \" + h;
|
465 |
var evt = document.createEvent(\"Event\");
|
466 |
evt.initEvent(\"input\", true, false);
|
467 |
document.getElementById(\"mouse\").getElementsByTagName(\"textarea\")[0].dispatchEvent(evt);
|
|
|
|
|
|
|
468 |
}' title='select'>⬚</a>""")
|
469 |
-
mouse = gr.Textbox(elem_id="mouse", value="""
|
470 |
output_mask.apply(fn=draw_mask, inputs=[ksize, threshold, mouse, output_mask], outputs=[output_mask])
|
471 |
submit = gr.Button("Submit")
|
472 |
with gr.Column():
|
|
|
338 |
|
339 |
def draw_mask(ksize, th, v, d, evt: gr.EventData):
|
340 |
print(v)
|
341 |
+
vv = json.loads(v)
|
342 |
+
pts = np.array(vv, np.int32)
|
343 |
+
pts = pts.reshape((-1,1,2))
|
344 |
+
cv2.polylines(d["background"],[pts],True,(0,0,0))
|
|
|
345 |
|
346 |
img = cv2.cvtColor(d["background"], cv2.COLOR_RGB2GRAY)
|
347 |
rows, cols = img.shape
|
|
|
367 |
#abs_grad_y = cv2.convertScaleAbs(grad_y)
|
368 |
|
369 |
#grad = cv2.addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 0)
|
370 |
+
#bw = cv2.cvtColor(cv2.threshold(255-img_back, th, 255, cv2.THRESH_BINARY)[1], cv2.COLOR_GRAY2RGB)
|
371 |
+
bw = cv2.cvtColor(255-img_back, cv2.COLOR_GRAY2RGB)
|
372 |
|
373 |
d["background"] = bw
|
374 |
d["composite"] = bw
|
|
|
428 |
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")
|
429 |
ksize = gr.Slider(label="Kernel", value=128, minimum=0, maximum=1024, step=1)
|
430 |
threshold = gr.Slider(label="Threshold", value=128, minimum=0, maximum=255, step=1)
|
431 |
+
selector = gr.HTML(value="""<a href='#' id='selector' onclick='
|
432 |
+
document.getElementById(\"image_edit\").getElementsByTagName(\"canvas\")[0].oncontextmenu = function(e){e.preventDefault();}
|
433 |
+
document.getElementById(\"image_edit\").getElementsByTagName(\"canvas\")[0].ondrag = function(e){e.preventDefault();}
|
434 |
+
|
435 |
+
document.getElementById(\"image_edit\").getElementsByTagName(\"canvas\")[0].onclick = function(e) {
|
|
|
436 |
var x = parseInt((e.clientX-e.target.getBoundingClientRect().x)*e.target.width/e.target.getBoundingClientRect().width);
|
437 |
var y = parseInt((e.clientY-e.target.getBoundingClientRect().y)*e.target.height/e.target.getBoundingClientRect().height);
|
|
|
438 |
|
439 |
+
var p = document.getElementById(\"mouse\").getElementsByTagName(\"textarea\")[0].value.slice(1, -1);
|
440 |
+
if (p != \"\") { p += \", \"; }
|
441 |
+
p += \"[\" + x + \", \" + y + \"]\";
|
442 |
+
document.getElementById(\"mouse\").getElementsByTagName(\"textarea\")[0].value = \"[\" + p + \"]\";
|
443 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
444 |
var evt = document.createEvent(\"Event\");
|
445 |
evt.initEvent(\"input\", true, false);
|
446 |
document.getElementById(\"mouse\").getElementsByTagName(\"textarea\")[0].dispatchEvent(evt);
|
447 |
+
}
|
448 |
+
document.getElementById(\"image_edit\").getElementsByTagName(\"canvas\")[0].ondblclick = function(e) {
|
449 |
+
document.getElementById(\"mouse\").getElementsByTagName(\"textarea\")[0].value = \"[]\";
|
450 |
}' title='select'>⬚</a>""")
|
451 |
+
mouse = gr.Textbox(elem_id="mouse", value="""[]""", interactive=False)
|
452 |
output_mask.apply(fn=draw_mask, inputs=[ksize, threshold, mouse, output_mask], outputs=[output_mask])
|
453 |
submit = gr.Button("Submit")
|
454 |
with gr.Column():
|