-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvideo2frame.py
69 lines (45 loc) · 1.48 KB
/
video2frame.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import cv2
import sys
import os
OUTPUT_DIR = f"tmp{os.sep}cv2output"
TMP_DIR = "tmp"
def ShowHelp():
print(f""">> By PRIME
Usage: python3 {sys.argv[0]} --video video.mp4 : Splits the video into frames.
python3 {sys.argv[0]} --clsoutdir : Clears the output folder.""")
sys.exit(0)
if len(sys.argv) < 2:
ShowHelp()
if sys.argv[1] == "--help":
ShowHelp()
if sys.argv[1] == "--clsoutdir":
print(f"[+] {OUTPUT_DIR} Clearing content...")
for element in os.listdir(OUTPUT_DIR):
os.remove(f"{OUTPUT_DIR}{os.sep}{element}")
print("[+] Finished... ")
sys.exit(0)
if sys.argv[1] == "--video" and os.path.exists(sys.argv[2]):
Target = sys.argv[2]
print(">> By PRIME")
if not os.path.exists(TMP_DIR) or not os.path.isdir(TMP_DIR):
os.mkdir(TMP_DIR)
if not os.path.exists(OUTPUT_DIR) or not os.path.isdir(OUTPUT_DIR):
os.mkdir(OUTPUT_DIR)
else:
print(f"[+] {OUTPUT_DIR} Clearing content...")
for element in os.listdir(OUTPUT_DIR):
os.remove(f"{OUTPUT_DIR}{os.sep}{element}")
TargetVideo = cv2.VideoCapture(Target)
FrameNumber = 0
print("[+] Extracting frames from the video...")
while(True):
is_succes, now_frame = TargetVideo.read()
sys.stdout.write(f"\r> Frame: {FrameNumber}")
sys.stdout.flush()
if is_succes:
cv2.imwrite(f"tmp{os.sep}cv2output{os.sep}frame_{FrameNumber}.jpg", now_frame)
else:
break
FrameNumber = FrameNumber + 1
print("\n[+] Finished...")
TargetVideo.release()