CASME2视频分帧
import cv2
import os
from datetime import datetime
def del_file(filepath):
"""
del_file()该函数的主要功能:删除某一目录下的所有文件或文件夹
:param filepath: 路径
:return:
"""
del_list = os.listdir(filepath)
for f in del_list:
file_path = os.path.join(filepath, f)
if os.path.isfile(file_path):
os.remove(file_path)
def video_to_images(get_fps, path, jpg_dir):
"""
video_to_images()该函数的主要功能:实现视频到图像的转换,并保存到相应的路径下
:param get_fps: 隔多少帧取一张图 1表示全部取
:param path: 每一个视频的路径
:param jpg_dir: 每一个视频转换成jpg的路径
:return:
"""
videoCapture = cv2.VideoCapture()
videoCapture.open(path)
if (not videoCapture.isOpened()):
print("\n打开视频失败!请检查视频路径是否正确\n")
exit(0)
fps = videoCapture.get(cv2.CAP_PROP_FPS)
frames = videoCapture.get(cv2.CAP_PROP_FRAME_COUNT)
print("fps=", int(fps), "frames=", int(frames))
order = 0
h = 0
while True:
h += 1
rval, frame = videoCapture.read()
if h == get_fps:
h = 0
order = order + 1
if rval:
cv2.imwrite(jpg_dir + '/' + str(order) + '.jpg', frame)
cv2.waitKey(1)
else:
break
videoCapture.release()
print('\nsave success!\n')
return
'''代码写于2023年4月26日,用于CASME2视频分帧'''
if __name__ == '__main__':
t1 = datetime.now()
get_fps = 1
video_root = './CASME2-RAW-video/CASME2-RAW/'
image_root = './CASME2-RAW-video2jpg/'
sub_list = os.listdir(video_root)
for i in range(len(sub_list)):
sub_dir = os.path.join(video_root,sub_list[i])+'/'
sub_video_list = os.listdir(sub_dir)
sub_file_dir = os.path.join(image_root,sub_list[i]) + '/'
for j in range(len(sub_video_list)):
temp = sub_video_list[j].split('.')[0]
jpg_dir = os.path.join(sub_file_dir, temp)
if not os.path.exists(jpg_dir):
os.makedirs(jpg_dir)
print("-----OK-----")
else:
print("文件夹已经存在!")
del_file(jpg_dir)
each_video_dir = os.path.join(sub_dir,sub_video_list[j])
video_to_images(get_fps, each_video_dir, jpg_dir)
t2 = datetime.now()
print("Time cost = ", (t2 - t1))
print("SUCCEED !!!")