1
+ import argparse
2
+ import os
3
+ import os .path as osp
4
+ import cv2
5
+ import glob
6
+
7
+ import sys
8
+
9
+ sys .path .append (osp .dirname (osp .dirname (__file__ )))
10
+ from configs .path_cfg import MOTSYNTH_ROOT
11
+ import tqdm
12
+
13
+
14
+ def main ():
15
+ parser = argparse .ArgumentParser (description = 'Get frames from a video' )
16
+ parser .add_argument ('--motsynth-root' , help = 'Directory hosting MOTSYnth part directories' , default = MOTSYNTH_ROOT )
17
+ args = parser .parse_args ()
18
+
19
+ video_paths = glob .glob (osp .join (args .motsynth_root , 'MOTSynth_[0-9]/[0-9][0-9][0-9].mp4' ))
20
+
21
+ frames_dir = os .path .join (args .motsynth_root , "frames" )
22
+ os .makedirs (frames_dir , exist_ok = True )
23
+
24
+ print ("Start extracting frames..." )
25
+
26
+ for video_path in tqdm .tqdm (video_paths ):
27
+ vidcap = cv2 .VideoCapture (video_path )
28
+
29
+ seq_name = osp .basename (video_path ).split ("." )[0 ].zfill (3 )
30
+ out_dir = os .path .join (frames_dir , seq_name , 'rgb' )
31
+ os .makedirs (out_dir , exist_ok = True )
32
+
33
+ count = 1
34
+ success = True
35
+
36
+ #print("Unpacking video...")
37
+
38
+ while success :
39
+ success , image = vidcap .read ()
40
+ if count < 3 :
41
+ count += 1
42
+ continue
43
+ if not success or count == 1803 :
44
+ break
45
+ if count % 200 == 0 :
46
+ print ("Extract frames until: " + str (count - 3 ).zfill (4 ) + ".jpg" )
47
+ filename = os .path .join (out_dir , str (count - 3 ).zfill (4 ) + ".jpg" )
48
+ cv2 .imwrite (filename , image ) # save frame as JPEG file
49
+ count += 1
50
+
51
+ print ("Done!" )
52
+
53
+ if __name__ == '__main__' :
54
+ main ()
0 commit comments