Update app.py
Browse files
app.py
CHANGED
|
@@ -87,10 +87,18 @@ def get_frames(video_in, step, name, n):
|
|
| 87 |
|
| 88 |
|
| 89 |
def create_video(frames, fps, type):
|
|
|
|
|
|
|
|
|
|
|
|
|
| 90 |
print("building video result")
|
| 91 |
imgs = []
|
| 92 |
for j, img in enumerate(frames):
|
| 93 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 94 |
|
| 95 |
mediapy.write_video(type + "_result.mp4", imgs, fps=fps)
|
| 96 |
return type + "_result.mp4"
|
|
@@ -145,7 +153,7 @@ def logscale(linear):
|
|
| 145 |
def linscale(linear):
|
| 146 |
return int(math.log2(linear))
|
| 147 |
|
| 148 |
-
def remove_bg(fl, count, mh, ms, md, lm
|
| 149 |
global fl_
|
| 150 |
fr = cv2.imread(fl).astype(np.uint8)
|
| 151 |
|
|
@@ -200,8 +208,7 @@ def remove_bg(fl, count, mh, ms, md, lm, backSub):
|
|
| 200 |
fr_fg[fr_fg>0] = 3 #probable fg
|
| 201 |
mask, bgdModel, fgdModel = cv2.grabCut(fr, fr_fg, None,None,None,31, cv2.GC_INIT_WITH_MASK)
|
| 202 |
mask = np.where((mask==2)|(mask==0),0,1).astype('uint8')
|
| 203 |
-
|
| 204 |
-
fr[fgMask==0] = (255,255,255)
|
| 205 |
|
| 206 |
cv2.imwrite(fl, fr)
|
| 207 |
return fl
|
|
@@ -258,9 +265,6 @@ def loadf(f, r_bg, mh, ms, md, lm):
|
|
| 258 |
f.sort(key=sortFiles)
|
| 259 |
fnew = []
|
| 260 |
|
| 261 |
-
backSub = cv2.createBackgroundSubtractorMOG2()
|
| 262 |
-
#backSub = cv2.createBackgroundSubtractorKNN()
|
| 263 |
-
|
| 264 |
for i, fl in enumerate(f):
|
| 265 |
ftype = fl.split('/')
|
| 266 |
if ftype[len(ftype)-1].split('.')[1] == 'mp4':
|
|
@@ -269,7 +273,7 @@ def loadf(f, r_bg, mh, ms, md, lm):
|
|
| 269 |
fl = denoise(fl)
|
| 270 |
|
| 271 |
if r_bg == True:
|
| 272 |
-
fl = remove_bg(fl, i, mh, ms, md, lm
|
| 273 |
if i % 2: # odd: is photo without the flash
|
| 274 |
fnew.append(fl)
|
| 275 |
else:
|
|
|
|
| 87 |
|
| 88 |
|
| 89 |
def create_video(frames, fps, type):
|
| 90 |
+
|
| 91 |
+
backSub = cv2.createBackgroundSubtractorMOG2()
|
| 92 |
+
#backSub = cv2.createBackgroundSubtractorKNN()
|
| 93 |
+
|
| 94 |
print("building video result")
|
| 95 |
imgs = []
|
| 96 |
for j, img in enumerate(frames):
|
| 97 |
+
frame = cv2.cvtColor(cv2.imread(img).astype(np.uint8), cv2.COLOR_BGR2RGB)
|
| 98 |
+
fgMask = backSub.apply(frame)
|
| 99 |
+
frame[fgMask==255] = (255,255,255)
|
| 100 |
+
frame[fgMask==0] = (0,0,0)
|
| 101 |
+
imgs.append(frame)
|
| 102 |
|
| 103 |
mediapy.write_video(type + "_result.mp4", imgs, fps=fps)
|
| 104 |
return type + "_result.mp4"
|
|
|
|
| 153 |
def linscale(linear):
|
| 154 |
return int(math.log2(linear))
|
| 155 |
|
| 156 |
+
def remove_bg(fl, count, mh, ms, md, lm):
|
| 157 |
global fl_
|
| 158 |
fr = cv2.imread(fl).astype(np.uint8)
|
| 159 |
|
|
|
|
| 208 |
fr_fg[fr_fg>0] = 3 #probable fg
|
| 209 |
mask, bgdModel, fgdModel = cv2.grabCut(fr, fr_fg, None,None,None,31, cv2.GC_INIT_WITH_MASK)
|
| 210 |
mask = np.where((mask==2)|(mask==0),0,1).astype('uint8')
|
| 211 |
+
#fr[mask==0] = (255,255,255)
|
|
|
|
| 212 |
|
| 213 |
cv2.imwrite(fl, fr)
|
| 214 |
return fl
|
|
|
|
| 265 |
f.sort(key=sortFiles)
|
| 266 |
fnew = []
|
| 267 |
|
|
|
|
|
|
|
|
|
|
| 268 |
for i, fl in enumerate(f):
|
| 269 |
ftype = fl.split('/')
|
| 270 |
if ftype[len(ftype)-1].split('.')[1] == 'mp4':
|
|
|
|
| 273 |
fl = denoise(fl)
|
| 274 |
|
| 275 |
if r_bg == True:
|
| 276 |
+
fl = remove_bg(fl, i, mh, ms, md, lm)
|
| 277 |
if i % 2: # odd: is photo without the flash
|
| 278 |
fnew.append(fl)
|
| 279 |
else:
|