先看完整代码:
import cv2
def main():
windowname = "Writing A Video"
cv2.namedWindow(windowname)
cap = cv2.VideoCapture('y.mp4')
filename = "D:\\out.avi"
codec = cv2.VideoWriter_fourcc('X', 'V', 'I', 'D')
framerate = 29
resolution = (640, 480)
VideoOutPut = cv2.VideoWriter(filename, codec, framerate, resolution)
if cap.isOpened():
ret, frame = cap.read()
else:
ret = False
while ret:
ret, frame = cap.read()
cv2.circle(frame, (200,200), 80, (0,255,0), -1)
VideoOutPut.write(frame)
cv2.imshow(windowname, frame)
if cv2.waitKey(1) == 27:
break
cv2.destroyAllWindows()
VideoOutPut.release()
cap.release()
if __name__ == "__main__":
main()
cv2.VideoCapture读取了一个视频文件,如果要读取摄像头视频,传0就好了。
写文件需要指定格式,例如代码里的cv2.VideoWriter_fourcc('X', 'V', 'I', 'D'),完整的FourCC 看这里Video Codecs by FOURCC
代码里用cv2.circle在视频里画了一个圈。
按Q键可退出程序。
需要示例视频文件可以在这里下载:Sample Video For OpenCV Video Reading
运行代码看效果: