需求
处理视频文件,需要将视频变成连续的图片之后再进行处理,可以利用OpenCV实现这一需求,cv2.VideoCapture
,设置好时间间隔后,每到该时间段就保存一张图片
实现
import os
import cv2
import sys
video_path = sys.argv[1] # video path
TIME_INTERVAL = sys.argv[2] # time period
def convet_video_into_imgs(time_interval=None):
videos = os.listdir(video_path)
for video_name in videos:
file_name = video_name.split('.')[0]
folder_name = os.path.join(video_path, file_name)
os.makedirs(folder_name, exist_ok=True)
vc = cv2.VideoCapture(
os.path.join(video_path, video_name))
c = 0
rval = vc.isOpened()
# set interval
t = time_interval if time_interval else int(TIME_INTERVAL) # per time_interval frames get one image
while rval:
c = c + 1
rval, frame = vc.read()
pic_path = folder_name + '/'
if rval:
if c % t == 0: # every t period to save a image
cv2.imwrite(pic_path + str(c/t) + '.png', frame)
else:
break
vc.release()
print('save_success')
print(folder_name)
if __name__ == "__main__":
convet_video_into_imgs()
在终端执行即可