参考: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)