def load_s1m_data(f_name, data_path, trainlist, K, T):
flip = np.random.binomial(1,.5,1)[0]
vid_path = data_path + f_name
img_size = [240,320]
while True:
try:
vid = imageio.get_reader(vid_path,"ffmpeg")
low = 1
high = vid.get_length()-K-T+1
if low == high:
stidx = 0
else:
stidx = np.random.randint(low=low, high=high)
seq = np.zeros((img_size[0], img_size[1], K+T, 3),
dtype="float32")
for t in xrange(K+T):
img = cv2.resize(vid.get_data(stidx+t),
(img_size[1],img_size[0]))[:,:,::-1]
seq[:,:,t] = transform(img)
if flip == 1:
seq = seq[:,::-1]
diff = np.zeros((img_size[0], img_size[1], K-1, 1),
dtype="float32")
for t in xrange(1,K):
prev = inverse_transform(seq[:,:,t-1])*255
prev = cv2.cvtColor(prev.astype("uint8"),cv2.COLOR_BGR2GRAY)
next = inverse_transform(seq[:,:,t])*255
next = cv2.cvtColor(next.astype("uint8"),cv2.COLOR_BGR2GRAY)
diff[:,:,t-1,0] = (next.astype("float32")-prev.astype("float32"))/255.
break
except Exception:
# In case the current video is bad load a random one
rep_idx = np.random.randint(low=0, high=len(trainlist))
f_name = trainlist[rep_idx]
vid_path = data_path + f_name
return seq, diff
评论列表
文章目录