summaryrefslogtreecommitdiff
path: root/scripts/flow/flow-warp-recflow-recursive-fwd.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/flow/flow-warp-recflow-recursive-fwd.py')
-rw-r--r--scripts/flow/flow-warp-recflow-recursive-fwd.py138
1 files changed, 138 insertions, 0 deletions
diff --git a/scripts/flow/flow-warp-recflow-recursive-fwd.py b/scripts/flow/flow-warp-recflow-recursive-fwd.py
new file mode 100644
index 0000000..4d15cc2
--- /dev/null
+++ b/scripts/flow/flow-warp-recflow-recursive-fwd.py
@@ -0,0 +1,138 @@
+import os
+import sys
+from shutil import move, copyfile
+from PIL import Image, ImageOps
+from shutil import copyfile, rmtree
+import numpy as np
+import cv2
+
+from_dir = "IMG_1734/"
+to_dir = "IMG_1738/"
+render_dir = "flowwarp_transfer_cross/"
+
+if os.path.exists(render_dir):
+ rmtree(render_dir)
+
+os.makedirs(render_dir)
+os.makedirs(render_dir + 'out_fwd_from/')
+os.makedirs(render_dir + 'out_rvr_from/')
+os.makedirs(render_dir + 'out_fwd_from_rec/')
+os.makedirs(render_dir + 'out_rvr_from_rec/')
+os.makedirs(render_dir + 'out_fwd_to/')
+os.makedirs(render_dir + 'out_rvr_to/')
+os.makedirs(render_dir + 'out_fwd_to_rec/')
+os.makedirs(render_dir + 'out_rvr_to_rec/')
+
+def warp_flow(img, flow):
+ h, w = flow.shape[:2]
+ flow = -flow
+ flow[:,:,0] += np.arange(w)
+ flow[:,:,1] += np.arange(h)[:,np.newaxis]
+ res = cv2.remap(img, flow, None, cv2.INTER_LINEAR)
+ return res
+def load(path):
+ pil_image = Image.open(path).convert('RGB')
+ im = np.array(pil_image)
+ im = im[:, :, ::-1].copy()
+ gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
+ return im, gray
+
+def get_files(d):
+ return sorted([i.name for i in os.scandir(d) if os.path.isfile(d + i.name) and not i.name.startswith('.') and i.name.endswith('png')])
+
+hsv = []
+prev = None
+prev_bgr = None
+gray = None
+prev_gray = None
+prev_from = None
+prev_fwd_from = None
+prev_rvr_from = None
+prev_from_gray = None
+prev_to = None
+prev_fwd_to = None
+prev_rvr_to = None
+prev_to_gray = None
+
+from_files = get_files(from_dir)
+to_files = get_files(to_dir)
+
+for i,from_fn in enumerate(from_files):
+ print(from_fn)
+ to_fn = to_files[i]
+
+ # load image and convert to grayscale
+ from_im, from_gray = load(from_dir + from_fn)
+ to_im, to_gray = load(to_dir + to_fn)
+
+ # store first frame
+ if prev_from_gray is None:
+ prev_fwd_from = from_im
+ prev_rvr_from = from_im
+ prev_from_gray = from_gray
+ prev_fwd_to = to_im
+ prev_rvr_to = to_im
+ prev_to_gray = to_gray
+ #hsv = np.zeros((256,512,3))
+ #hsv[...,1] = 255
+ continue
+
+ # compute optical flow
+ from_fwd_flow = cv2.calcOpticalFlowFarneback(prev_from_gray, from_gray, None, 0.5, 3, 15, 3, 5, 1.2, 0)
+ #from_rvr_flow = cv2.calcOpticalFlowFarneback(from_gray, prev_from_gray, None, 0.5, 3, 15, 3, 5, 1.2, 0)
+ #to_fwd_flow = cv2.calcOpticalFlowFarneback(prev_to_gray, to_gray, None, 0.5, 3, 15, 3, 5, 1.2, 0)
+ #to_rvr_flow = cv2.calcOpticalFlowFarneback(to_gray, prev_to_gray, None, 0.5, 3, 15, 3, 5, 1.2, 0)
+ #cross_fwd_flow = cv2.calcOpticalFlowFarneback(from_gray, to_gray, None, 0.5, 3, 15, 3, 5, 1.2, 0)
+ #cross_rvr_flow = cv2.calcOpticalFlowFarneback(to_gray, from_gray, None, 0.5, 3, 15, 3, 5, 1.2, 0)
+
+ #mag, ang = cv2.cartToPolar(flow[...,0], flow[...,1])
+ #hsv[...,0] = ang * 180 / np.pi / 2
+ #hsv[...,2] = cv2.normalize(mag, None, 0, 255, cv2.NORM_L2)
+ #bgr = cv2.cvtColor(hsv.astype('uint8'), cv2.COLOR_HSV2BGR)
+
+ #if prev_bgr is None:
+ # prev_bgr = np.copy(bgr)
+ # continue
+
+ #if (i % 10) == 3:
+ # wd = "test/"
+ #elif (i % 10) == 6:
+ # wd = "val/"
+ #else:
+ # wd = "train/"
+
+ fwd_flow = from_fwd_flow
+ #rvr_flow = from_rvr_flow
+ out_fwd_from = warp_flow(from_im, fwd_flow)
+ out_fwd_from_rec = warp_flow(prev_fwd_from, fwd_flow)
+ out_fwd_to = warp_flow(to_im, fwd_flow)
+ out_fwd_to_rec = warp_flow(prev_fwd_to, fwd_flow)
+
+ #out_rvr_from = warp_flow(from_im, rvr_flow)
+ #out_rvr_from_rec = warp_flow(prev_rvr_from, rvr_flow)
+ #out_rvr_to = warp_flow(to_im, rvr_flow)
+ #out_rvr_to_rec = warp_flow(prev_rvr_to, rvr_flow)
+
+ ren = "frame_{:05d}.png".format(i)
+ #cv2.imwrite(render_dir + "A/" + wd + ren, prev_bgr)
+ #cv2.imwrite(render_dir + "B/" + wd + ren, bgr)
+ cv2.imwrite(render_dir + "out_fwd_from/" + ren, out_fwd_from)
+ cv2.imwrite(render_dir + "out_fwd_from_rec/" + ren, out_fwd_from_rec)
+ cv2.imwrite(render_dir + "out_fwd_to/" + ren, out_fwd_to)
+ cv2.imwrite(render_dir + "out_fwd_to_rec/" + ren, out_fwd_to_rec)
+ #cv2.imwrite(render_dir + "out_rvr_from/" + ren, out_rvr_from)
+ #cv2.imwrite(render_dir + "out_rvr_from_rec/" + ren, out_rvr_from_rec)
+ #cv2.imwrite(render_dir + "out_rvr_to/" + ren, out_rvr_to)
+ #cv2.imwrite(render_dir + "out_rvr_to_rec/" + ren, out_rvr_to_rec)
+ #cv2.imwrite(render_dir + "next/" + ren, out_next)
+ # copyfile(work_dir + fn, render_dir + "B/" + wd + ren)
+
+ prev_from_gray = from_gray
+ prev_to_gray = to_gray
+ if i > 3:
+ prev_fwd_from = out_fwd_from_rec
+ prev_fwd_to = out_fwd_to_rec
+ #prev_rvr_from = out_rvr_from_rec
+ #prev_rvr_to = out_rvr_to_rec
+ #prev_bgr = np.copy(bgr)
+