git: https://github.com/linyi0604/Computer-Vision
1 # coding:utf8
2 import cv2 3
4 """
5 读取视频文件的帧, 采用yuv颜色编码写入到另一个帧 6
7 VideoCapture和VideoWriter用于视频文件的读写 8 VideoCapture读的每一帧都是一个bgr格式的图像 9 """
10 videoCapture = cv2.VideoCapture("../data/demo3.mp4") 11 fps = videoCapture.get(cv2.CAP_PROP_FPS) 12 size = ( 13 int(videoCapture.get(cv2.CAP_PROP_FRAME_WIDTH)), 14 int(videoCapture.get(cv2.CAP_PROP_FRAME_HEIGHT)) 15 ) 16
17 videoWriter = cv2.VideoWriter( 18 "output.mp4", 19 cv2.VideoWriter_fourcc("I", "4", "2", "0"), # 编码器
20 fps, 21 size 22 ) 23 '''
24 编码器常用的几种: 25 cv2.VideoWriter_fourcc("I", "4", "2", "0") 26 压缩的yuv颜色编码器,4:2:0色彩度子采样 兼容性好,产生很大的视频 avi 27 cv2.VideoWriter_fourcc("P", I", "M", "1") 28 采用mpeg-1编码,文件为avi 29 cv2.VideoWriter_fourcc("X", "V", "T", "D") 30 采用mpeg-4编码,得到视频大小平均 拓展名avi 31 cv2.VideoWriter_fourcc("T", "H", "E", "O") 32 Ogg Vorbis, 拓展名为ogv 33 cv2.VideoWriter_fourcc("F", "L", "V", "1") 34 FLASH视频,拓展名为.flv 35 '''
36
37 success, frame = videoCapture.read() 38 while success: # 循环直到没有帧了
39 videoWriter.write(frame) 40 success, frame = videoCapture.read()