forked from sczhou/CodeFormer
-
Notifications
You must be signed in to change notification settings - Fork 23
/
function.py
123 lines (107 loc) · 3.19 KB
/
function.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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# --- picup frame ---
import cv2
import os
def save_frame(video_name, video_folder, pic_folder):
# setting
#video_folder = 'examples/videos'
#pic_folder ='pic'
frame_num = 10
# content
video_path = video_folder + '/' + video_name
cap = cv2.VideoCapture(video_path)
if not cap.isOpened():
return
cap.set(cv2.CAP_PROP_POS_FRAMES, frame_num)
ret, frame = cap.read()
result_path = pic_folder + '/' + os.path.splitext(video_name)[0]+'.jpg'
if ret:
cv2.imwrite(result_path, frame)
# --- display_movie ---
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
import os
def display_movie(folder, name):
fig = plt.figure(figsize=(30, 60))
files = sorted(os.listdir(folder))
for i, file in enumerate(files):
if file=='.ipynb_checkpoints':
continue
if file=='.DS_Store':
continue
img = Image.open(folder+'/'+file)
images = np.asarray(img)
ax = fig.add_subplot(10, 5, i+1, xticks=[], yticks=[])
image_plt = np.array(images)
ax.imshow(image_plt)
ax.set_xlabel(name[i], fontsize=30)
fig.tight_layout()
plt.show()
plt.close()
# --- video_2_images
import cv2
def video_2_images(video_file, image_dir, image_file):
# Initial setting
i = 0
interval = 1
length = 1800 # リミッター
cap = cv2.VideoCapture(video_file)
fps = cap.get(cv2.CAP_PROP_FPS) # fps取得
while(cap.isOpened()):
flag, frame = cap.read()
if flag == False:
break
if i == length*interval:
break
if i % interval == 0:
cv2.imwrite(image_dir+image_file % str(int(i/interval)).zfill(6), frame)
i += 1
cap.release()
return fps, i, interval
# --- display_mp4 ---
from IPython.display import display, HTML, clear_output
def display_mp4(path):
from base64 import b64encode
mp4 = open(path,'rb').read()
data_url = "data:video/mp4;base64," + b64encode(mp4).decode()
display(HTML("""
<video width=700 controls>
<source src="%s" type="video/mp4">
</video>
""" % data_url))
#print('Display finished.') ###
# --- display_pic ---
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
import os
def display_pic(folder):
fig = plt.figure(figsize=(30, 60))
files = os.listdir(folder)
files.sort()
for i, file in enumerate(files):
if file=='.ipynb_checkpoints':
continue
if file=='.DS_Store':
continue
img = Image.open(folder+'/'+file)
images = np.asarray(img)
ax = fig.add_subplot(10, 5, i+1, xticks=[], yticks=[])
image_plt = np.array(images)
ax.imshow(image_plt)
#name = os.path.splitext(file)
ax.set_xlabel(file, fontsize=30)
plt.show()
plt.close()
# --- reset_folder ---
import shutil
def reset_folder(path):
if os.path.isdir(path):
shutil.rmtree(path)
os.makedirs(path,exist_ok=True)
# --- get_sampling_rate ---
import wave
def get_rate(file_path):
wf = wave.open(file_path, "r")
fs = wf.getframerate()
return fs