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()