freealise commited on
Commit
6b55b39
1 Parent(s): 7f3b616

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +45 -35
app.py CHANGED
@@ -20,6 +20,8 @@ from depth_anything.dpt import DepthAnything
20
  from depth_anything.util.transform import Resize, NormalizeImage, PrepareForNet
21
  from moviepy.editor import *
22
 
 
 
23
  frame_selected = 0
24
  frames = []
25
  depths = []
@@ -173,6 +175,7 @@ def make_video(video_path, outdir='./vis_video_depth', encoder='vits'):
173
  # out.release()
174
  cv2.destroyAllWindows()
175
 
 
176
  global frame_selected
177
  global depths
178
  global frames
@@ -182,12 +185,15 @@ def make_video(video_path, outdir='./vis_video_depth', encoder='vits'):
182
  if depth_color.shape[0] == 2048: #height
183
  masks[len(masks)-1] = './gradient_large.png'
184
  depth_frames[len(masks)-1] = './gradient_large.png'
 
185
  elif depth_color.shape[0] == 1024:
186
  masks[len(masks)-1] = './gradient.png'
187
  depth_frames[len(masks)-1] = './gradient.png'
 
188
  else:
189
  masks[len(masks)-1] = './gradient_small.png'
190
  depth_frames[len(masks)-1] = './gradient_small.png'
 
191
 
192
  return final_vid, final_zip, frames, masks[frame_selected] #output_path
193
 
@@ -347,56 +353,60 @@ def switch_rows(v):
347
  print(frames[0])
348
  return frames
349
 
350
- def draw_mask(f, n, c, k, v, d, evt: gr.EventData):
 
351
  global frame_selected
352
  global masks
 
353
 
354
  points = json.loads(v)
355
  pts = np.array(points, np.int32)
356
  pts = pts.reshape((-1,1,2))
357
 
358
- if d["background"].shape[0] == 2048: #height
359
- gradient = cv2.imread(f[0]).astype(np.uint8)
360
- elif d["background"].shape[0] == 1024:
361
- gradient = cv2.imread(f[1]).astype(np.uint8)
362
- else:
363
- gradient = cv2.imread(f[2]).astype(np.uint8)
364
-
365
- if len(d["layers"]) == 1:
366
- d["layers"].append(np.zeros_like(d["layers"][0]))
367
- else:
368
- d["background"] = cv2.imread(masks[frame_selected]).astype(np.uint8)
369
 
370
- bg = cv2.cvtColor(d["background"], cv2.COLOR_RGBA2GRAY)
 
 
 
 
371
 
372
- diff = (bg-cv2.cvtColor(gradient, cv2.COLOR_RGBA2GRAY)).astype(np.uint8)
373
- mask = cv2.inRange(diff, -int(c/2), int(c/2))
374
- #kernel = np.ones((k,k),np.float32)/(k*k)
375
- #mask = cv2.filter2D(mask,-1,kernel)
376
 
377
- indices = np.arange(0,256) # List of all colors
378
- divider = np.linspace(0,255,n+1)[1] # we get a divider
379
- quantiz = np.int0(np.linspace(0,255,n)) # we get quantization colors
380
- color_levels = np.clip(np.int0(indices/divider),0,n-1) # color levels 0,1,2..
381
- palette = quantiz[color_levels]
382
 
383
- #for i in range(n):
384
- # bg[(bg >= i*255/n) & (bg < (i+1)*255/n)] = i*255/(n-1)
385
- bg = cv2.convertScaleAbs(palette[bg] + mask).astype(np.uint8) # Converting image back to uint
 
 
386
 
387
- scale = 1
388
- delta = 0
389
- ddepth = cv2.CV_16S
390
 
391
- grad_x = cv2.convertScaleAbs(cv2.Sobel(bg, ddepth, 1, 0, ksize=3, scale=scale, delta=delta, borderType=cv2.BORDER_DEFAULT))
392
- grad_y = cv2.convertScaleAbs(cv2.Sobel(bg, ddepth, 0, 1, ksize=3, scale=scale, delta=delta, borderType=cv2.BORDER_DEFAULT))
393
- grad_z = cv2.convertScaleAbs(cv2.Sobel(bg, ddepth, 1, 1, ksize=3, scale=scale, delta=delta, borderType=cv2.BORDER_DEFAULT))
394
 
395
- grad = cv2.addWeighted(grad_x, 0.5, grad_y, 0.5, 0)
396
- grad = cv2.addWeighted(grad, 0.5, grad_z, 0.5, 0)
 
 
 
397
 
398
- mask = mask + cv2.inRange(grad, 1, 255)
399
- bg[mask>0] = 255
 
 
 
 
 
400
 
401
  x = points[len(points)-1][0]
402
  y = points[len(points)-1][1]
 
20
  from depth_anything.util.transform import Resize, NormalizeImage, PrepareForNet
21
  from moviepy.editor import *
22
 
23
+ gradient = None
24
+ params = { fnum:0, l:16, c:3, k:7 }
25
  frame_selected = 0
26
  frames = []
27
  depths = []
 
175
  # out.release()
176
  cv2.destroyAllWindows()
177
 
178
+ global gradient
179
  global frame_selected
180
  global depths
181
  global frames
 
185
  if depth_color.shape[0] == 2048: #height
186
  masks[len(masks)-1] = './gradient_large.png'
187
  depth_frames[len(masks)-1] = './gradient_large.png'
188
+ gradient = cv2.imread('./gradient_large.png').astype(np.uint8)
189
  elif depth_color.shape[0] == 1024:
190
  masks[len(masks)-1] = './gradient.png'
191
  depth_frames[len(masks)-1] = './gradient.png'
192
+ gradient = cv2.imread('./gradient.png').astype(np.uint8)
193
  else:
194
  masks[len(masks)-1] = './gradient_small.png'
195
  depth_frames[len(masks)-1] = './gradient_small.png'
196
+ gradient = cv2.imread('./gradient_small.png').astype(np.uint8)
197
 
198
  return final_vid, final_zip, frames, masks[frame_selected] #output_path
199
 
 
353
  print(frames[0])
354
  return frames
355
 
356
+ def draw_mask(f, l, c, k, v, d, evt: gr.EventData):
357
+ global params
358
  global frame_selected
359
  global masks
360
+ global gradient
361
 
362
  points = json.loads(v)
363
  pts = np.array(points, np.int32)
364
  pts = pts.reshape((-1,1,2))
365
 
366
+ scale = 1
367
+ delta = 0
368
+ ddepth = cv2.CV_16S
 
 
 
 
 
 
 
 
369
 
370
+ if len(d["layers"]) == 1 or params["fnum"] != frame_selected or params["l"] != l or params["c"] != c or params["k"] != k:
371
+ if len(d["layers"]) == 1:
372
+ d["layers"].append(np.zeros_like(d["layers"][0]))
373
+ else:
374
+ d["background"] = cv2.imread(masks[frame_selected]).astype(np.uint8)
375
 
376
+ bg = cv2.cvtColor(d["background"], cv2.COLOR_RGBA2GRAY)
 
 
 
377
 
378
+ diff = (bg-cv2.cvtColor(gradient, cv2.COLOR_RGBA2GRAY)).astype(np.uint8)
379
+ mask = cv2.inRange(diff, -int(c/2), int(c/2))
380
+ #kernel = np.ones((k,k),np.float32)/(k*k)
381
+ #mask = cv2.filter2D(mask,-1,kernel)
 
382
 
383
+ indices = np.arange(0,256) # List of all colors
384
+ divider = np.linspace(0,255,l+1)[1] # we get a divider
385
+ quantiz = np.int0(np.linspace(0,255,l)) # we get quantization colors
386
+ color_levels = np.clip(np.int0(indices/divider),0,l-1) # color levels 0,1,2..
387
+ palette = quantiz[color_levels]
388
 
389
+ #for i in range(l):
390
+ # bg[(bg >= i*255/l) & (bg < (i+1)*255/l)] = i*255/(l-1)
391
+ bg = cv2.convertScaleAbs(palette[bg] + mask).astype(np.uint8) # Converting image back to uint
392
 
393
+ grad_x = cv2.convertScaleAbs(cv2.Sobel(bg, ddepth, 1, 0, ksize=3, scale=scale, delta=delta, borderType=cv2.BORDER_DEFAULT))
394
+ grad_y = cv2.convertScaleAbs(cv2.Sobel(bg, ddepth, 0, 1, ksize=3, scale=scale, delta=delta, borderType=cv2.BORDER_DEFAULT))
395
+ grad_z = cv2.convertScaleAbs(cv2.Sobel(bg, ddepth, 1, 1, ksize=3, scale=scale, delta=delta, borderType=cv2.BORDER_DEFAULT))
396
 
397
+ grad = cv2.addWeighted(grad_x, 0.5, grad_y, 0.5, 0)
398
+ grad = cv2.addWeighted(grad, 0.5, grad_z, 0.5, 0)
399
+
400
+ mask = mask + cv2.inRange(grad, 1, 255)
401
+ bg[mask>0] = 255
402
 
403
+ params["fnum"] = frame_selected
404
+ params["l"] = l
405
+ params["c"] = c
406
+ params["k"] = k
407
+ else:
408
+ bg = cv2.cvtColor(d["layers"][0], cv2.COLOR_RGBA2GRAY)
409
+ mask = cv2.inRange(bg, 255, 255)
410
 
411
  x = points[len(points)-1][0]
412
  y = points[len(points)-1][1]