freealise commited on
Commit
f233963
1 Parent(s): f213620

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -27
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
- for i in range(n):
387
- bg[(bg >= i*255/n) & (bg < (i+1)*255/n)] = i*255/(n-1)
388
- bg = cv2.convertScaleAbs(bg).astype(np.uint8) #palette[bg]) # Converting image back to uint
 
 
 
 
 
 
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
- selector = gr.HTML(value="""<div id='select_cursor' style='width:1px;height:1px;position:absolute;border:8px dotted #ffffff;opacity:50%;'></div>
 
 
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(\"select_cursor\").style.borderColor != \"#ffffff\") {
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
- document.getElementById(\"select_cursor\").style.borderColor = \"#a0a0a0\";
 
 
523
  }
524
  document.getElementById(\"image_edit\").getElementsByTagName(\"canvas\")[0].onpointerup = function(e) {
525
- document.getElementById(\"select_cursor\").style.borderColor = \"#ffffff\";
526
- }' title='Select polygon' style='text-decoration:none;color:white;'>⬚ Select polygon</a> <a href='#' id='clear_select' onclick='
 
 
 
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')