参考:https://blog.csdn.net/qq_43328040/article/details/109169733
实际测试发现合并操作有错,参考其他资料修改下
准备:一个电影视频 1.avi
运行1,分拆,取前2000帧保存到img目录
import cv2
cap = cv2.VideoCapture('1.avi')
isOpened = cap.isOpened # 判断视频是否可读
print(isOpened)
fps = cap.get(cv2.CAP_PROP_FPS) # 获取图像的帧,即该视频每秒有多少张图片
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) # 获取图像的宽度和高度
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
print(fps, width, height)
i = 100
while(isOpened):
if i == 501: # 最大2001
break
# 读取每一帧,falg表示是否读取成功,frame为图片的内容
(flag, frame) = cap.read()
filename = '.\img\img' + str(i) + '.jpg' # 文件的名字
if flag:
cv2.imwrite(filename, frame, [cv2.IMWRITE_JPEG_QUALITY,100]) # 保存图片
i += 1
运行2,分拆,把选取的帧保存为视频,可以选帧率,即实现快放慢放
import cv2
# 输出视频路径
video_dir = '2.avi'
# 帧率
fps = 50
# 图片尺寸
img_size = (1920, 1080)
fourcc = cv2.VideoWriter_fourcc('M', 'J', 'P', 'G')
video_writer = cv2.VideoWriter(video_dir, fourcc, fps, img_size)
for i in range(350, 501): # 选部分帧
im_name = 'img\img'+ str(i) + '.jpg'
print(im_name)
frame = cv2.imread(im_name)
video_writer.write(frame)
cv2.imshow('rr', frame)
cv2.waitKey(1)