python选取本地视频的指定帧制作延时摄影

通过cv2读取本地视频,获取视频的分辨率,然后读取视频的指定帧保存到新的本地视频中,制作成延时摄影视频。
通过cap.set(cv2.CAP_PROP_POS_FRAMES, keys_frame)语句对特定帧的读取解决了循环遍历所有帧并通过if判断语句保存指定帧耗时过长的问题。

  • 调用库及相关参数设置
import cv2
out_fps = 30            # 输出文件的帧率
timeF = 240             # 视频帧计数间隔
keys_frame = 0          # 设置起始帧率
  • 本地视频读取及保存视频参数设置

参考自【python】opencv教程CV2模块——视频捕获,延时摄影视频、鬼畜表情包密集制作

cap = cv2.VideoCapture('S00505-13202690.mp4')
# 获取捕获的分辨率
size =(int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)),
       int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))      
# 设置要保存视频的编码,分辨率和帧率
video = cv2.VideoWriter(
    "./time_lapse.mp4", 
    cv2.VideoWriter_fourcc('M','P','4','2'), 
    out_fps, 
    size)
  • 读取指定帧并保存到视频文件中

参考自基于python+opencv提取视频指定关键帧

if cap.isOpened():#判断是否正常打开
    rval, frame = cap.read()
else:
    rval = False
while rval: 
    cap.set(cv2.CAP_PROP_POS_FRAMES, keys_frame)
    rval, frame = cap.read()
    video.write(frame)
    keys_frame += timeF 
# 释放资源并写入视频文件
video.release()
cap.release()

最终实现效果如下。

【延时摄影】+魅族发布会现场搭建第二期

你可能感兴趣的:(python视频处理,python,opencv,视频处理)