之前处理视频数据用的比较多,写了一个脚本方便批量转化视频。代码如下(路径记得修改一下):
import cv2
import os
def video_to_img(src_in,src_out):
if not os.path.exists(src_out):
os.makedirs(src_out)
video_capture = cv2.VideoCapture(src_in)
fps = video_capture.get(cv2.CAP_PROP_FPS)
width = video_capture.get(cv2.CAP_PROP_FRAME_WIDTH)
height = video_capture.get(cv2.CAP_PROP_FRAME_HEIGHT)
frame_count = video_capture.get(cv2.CAP_PROP_FRAME_COUNT)
print('fps:',fps)
print('width:', width)
print('height:', height)
print('frame_count:', frame_count)
output_file_base = src_out
success, frame = video_capture.read()
print(success)
frame_count = 1
while success and not cv2.waitKey(1) == 27:
cv2.imwrite(output_file_base+'/frame_'+str(frame_count)+'.png',frame)
print('保存路径:'+output_file_base+'/frame_'+str(frame_count)+'.png')
# cv2.imshow("video", frame)
success, frame = video_capture.read()
frame_count = frame_count + 1
video_capture.release()
print('视频转图像帧完成:')
print('video_dir:',src_in)
print('img_dir:',src_out)
if __name__=="__main__":
file_path = './data/video'
save_path = './data/frame'
if not os.path.exists(save_path):
os.makedirs(save_path)
for video_name in os.listdir(file_path):
img_save_dir = os.path.splitext(video_name)[0]
# print('dav:',file_path + '/' + video_name)
# print('mp4:',save_path + '/' + video_name_mp4)
if(len(os.path.splitext(video_name)[1])!=0):
video_to_img(file_path + '/' + video_name, save_path + '/' + img_save_dir