功能如标题,代码如下:
import os
import numpy as np
from tqdm import tqdm
import time
from PIL import Image
from moviepy.editor import VideoFileClip,ImageClip
def convert_video_to_image(video_file_path,output_folder_path,every_n_frames):
if not os.path.exists(output_folder_path):
os.makedirs(output_folder_path)
video = VideoFileClip(video_file_path)
video_name = os.path.splitext(os.path.basename(video_file_path))[0]
for i,frame in tqdm(enumerate(video.iter_frames()),total=int(video.fps*video.duration),desc="deal single video"):
if i%%every_n_frames==0:
savename = os.path.join(output_folder_path,video_name+'_'+time.strfmate("%Y%m%d%H%M%S")+f"_{i}.jpg")
#firet method
# do something else...
frame=frame[20:30,50:60,:]
img= Image.fromarray(frame)
img.save(savename)
# second method
# can't do something change image
frame_image = ImageClip(frame)
frame_image.save_frame(savename)
video.reader.close()
video.audio.reader.close_proc()
使用PIL可以对图片进行额外的处理。以上代码显然要比用opencv来做这个操作简单。