OpenCV提供了VideoCapture类和VideoWriter类来支持各种格式的视频文件。支持的格式类型会因系统的不同可能会有变化,但应该都支持AVI格式。在到达视频文件末尾之前,VideoCapture类可通过read()函数来获取新的帧,每一帧是基于BGR格式的图像。
可将一副图像传递给VideoWriter类的write()函数,该函数会将这幅图像加到VideoWriter类所指向的文件中。下面给出一个示例。该示例读取一个AVI文件的帧,并采用YUV编码写入VideoWriter类创建的文件中。
import cv2
videoCapture = cv2.VideoCapture('MyInputVid.avi') # 使用VideoCapture类创建一个视频读取对象
fps = videoCapture.get(cv2.CAP_PROP_FPS) # 获取视频的fps
size = (int(videoCapture.get(cv2.CAP_PROP_FRAME_WIDTH)),int(videoCapture.get(cv2.CAP_PROP_FRAME_HEIGHT)))
# 获取视频的宽和高
videoWriter = cv2.VideoWriter('MyOutputVid.avi',cv2.VideoWriter_fourcc('I','4','2','0'),fps,size)