Update app.py
Browse files
app.py
CHANGED
@@ -23,6 +23,9 @@ interpolator = interpolator.Interpolator(model, None)
|
|
23 |
ffmpeg_path = util.get_ffmpeg_path()
|
24 |
mediapy.set_ffmpeg(ffmpeg_path)
|
25 |
|
|
|
|
|
|
|
26 |
|
27 |
def do_interpolation(frame1, frame2, interpolation, n):
|
28 |
print("tween frames: " + str(interpolation))
|
@@ -142,6 +145,43 @@ def logscale(linear):
|
|
142 |
def linscale(linear):
|
143 |
return int(math.log2(linear))
|
144 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
145 |
def sharpest(fl, i):
|
146 |
break_vid = get_frames(fl, "vid_input_frame", "origin", i)
|
147 |
|
@@ -179,7 +219,7 @@ def sortFiles(e):
|
|
179 |
e = e.split('/')
|
180 |
return e[len(e)-1]
|
181 |
|
182 |
-
def loadf(f):
|
183 |
if f != None and f[0] != None:
|
184 |
f.sort(key=sortFiles)
|
185 |
fnew = []
|
@@ -188,6 +228,9 @@ def loadf(f):
|
|
188 |
ftype = fl.split('/')
|
189 |
if ftype[len(ftype)-1].split('.')[1] == 'mp4':
|
190 |
fl = sharpest(fl, i)
|
|
|
|
|
|
|
191 |
|
192 |
fnew.append(fl)
|
193 |
return fnew, fnew
|
@@ -227,7 +270,8 @@ with gr.Blocks() as demo:
|
|
227 |
files_orig = gr.File(file_count="multiple", file_types=['image', '.mp4'])
|
228 |
files_input = gr.File(file_count="multiple", visible=False)
|
229 |
gallery_input = gr.Gallery(label="Slideshow", preview=True, columns=8192, interactive=False)
|
230 |
-
|
|
|
231 |
|
232 |
with gr.Row():
|
233 |
interpolation_slider = gr.Slider(minimum=1, maximum=5, step=1, value=1, label="Interpolation Steps: ")
|
@@ -245,10 +289,10 @@ with gr.Blocks() as demo:
|
|
245 |
|
246 |
gr.Examples(
|
247 |
examples=[[
|
248 |
-
["./examples/0.png", "./examples/1.png", "./examples/2.png", "./examples/3.png", "./examples/4.png"]
|
249 |
]],
|
250 |
fn=loadf,
|
251 |
-
inputs=[files_orig],
|
252 |
outputs=[files_input, gallery_input],
|
253 |
cache_examples=True
|
254 |
)
|
|
|
23 |
ffmpeg_path = util.get_ffmpeg_path()
|
24 |
mediapy.set_ffmpeg(ffmpeg_path)
|
25 |
|
26 |
+
fl_ = ""
|
27 |
+
fl_mask = ""
|
28 |
+
|
29 |
|
30 |
def do_interpolation(frame1, frame2, interpolation, n):
|
31 |
print("tween frames: " + str(interpolation))
|
|
|
145 |
def linscale(linear):
|
146 |
return int(math.log2(linear))
|
147 |
|
148 |
+
def remove_bg(fl, i):
|
149 |
+
global fl_
|
150 |
+
fr = cv2.imread(fl)
|
151 |
+
|
152 |
+
b = 1
|
153 |
+
element = cv2.getStructuringElement(cv2.MORPH_RECT, (2 * b + 1, 2 * b + 1), (b, b))
|
154 |
+
|
155 |
+
n = int((fr.shape[0]*fr.shape[1]) / (256*256))
|
156 |
+
fr_bg = cv2.medianBlur(fr, 255)
|
157 |
+
|
158 |
+
for i in range(0, n):
|
159 |
+
fr_bg = cv2.medianBlur(fr_bg, 255)
|
160 |
+
|
161 |
+
fr_diff = cv2.convertScaleAbs(fr.astype(np.int16)-fr_bg.astype(np.int16)).astype(np.uint8)
|
162 |
+
fr_diff = cv2.cvtColor(fr_diff, cv2.COLOR_BGR2GRAY)
|
163 |
+
|
164 |
+
md = 12
|
165 |
+
fr_diff[fr_diff>=md] = 255
|
166 |
+
fr_diff[fr_diff<md] = 0
|
167 |
+
|
168 |
+
cv2.rectangle(fr_diff,(0,0),(fr_diff.shape[1]-1,fr_diff.shape[0]-1),(255,255,255),1)
|
169 |
+
mask = cv2.floodFill(fr_diff, None, (0, 0), 255, 0, 0, (4 | cv2.FLOODFILL_FIXED_RANGE))[2] #(4 | cv.FLOODFILL_FIXED_RANGE | cv.FLOODFILL_MASK_ONLY | 255 << 8)
|
170 |
+
# 255 << 8 tells to fill with the value 255)
|
171 |
+
mask = mask[1:mask.shape[0]-1, 1:mask.shape[1]-1]
|
172 |
+
fr_diff[mask>0] = 0
|
173 |
+
|
174 |
+
fr_diff = cv2.dilate(cv2.erode(fr_diff, element), element)
|
175 |
+
|
176 |
+
if int(i/2) == i/2: # is photo with the flash
|
177 |
+
fl_ = fl.split(".")[0] + "_.png"
|
178 |
+
cv2.imwrite(fl_, fr_diff)
|
179 |
+
else: # is without
|
180 |
+
fr = cv2.imread(fl_)
|
181 |
+
fr = fr_diff - fr
|
182 |
+
cv2.imwrite(fl_, fr)
|
183 |
+
return fl_
|
184 |
+
|
185 |
def sharpest(fl, i):
|
186 |
break_vid = get_frames(fl, "vid_input_frame", "origin", i)
|
187 |
|
|
|
219 |
e = e.split('/')
|
220 |
return e[len(e)-1]
|
221 |
|
222 |
+
def loadf(f, r_bg):
|
223 |
if f != None and f[0] != None:
|
224 |
f.sort(key=sortFiles)
|
225 |
fnew = []
|
|
|
228 |
ftype = fl.split('/')
|
229 |
if ftype[len(ftype)-1].split('.')[1] == 'mp4':
|
230 |
fl = sharpest(fl, i)
|
231 |
+
|
232 |
+
if r_bg == True:
|
233 |
+
fl = remove_bg(fl, i)
|
234 |
|
235 |
fnew.append(fl)
|
236 |
return fnew, fnew
|
|
|
270 |
files_orig = gr.File(file_count="multiple", file_types=['image', '.mp4'])
|
271 |
files_input = gr.File(file_count="multiple", visible=False)
|
272 |
gallery_input = gr.Gallery(label="Slideshow", preview=True, columns=8192, interactive=False)
|
273 |
+
r_bg = gr.Checkbox(label="Remove background", value=True)
|
274 |
+
files_orig.upload(fn=loadf, inputs=[files_orig, r_bg], outputs=[files_input, gallery_input])
|
275 |
|
276 |
with gr.Row():
|
277 |
interpolation_slider = gr.Slider(minimum=1, maximum=5, step=1, value=1, label="Interpolation Steps: ")
|
|
|
289 |
|
290 |
gr.Examples(
|
291 |
examples=[[
|
292 |
+
["./examples/0.png", "./examples/1.png", "./examples/2.png", "./examples/3.png", "./examples/4.png"], True
|
293 |
]],
|
294 |
fn=loadf,
|
295 |
+
inputs=[files_orig, r_bg],
|
296 |
outputs=[files_input, gallery_input],
|
297 |
cache_examples=True
|
298 |
)
|