OpenCV库学习之cv2.VideoWriter_fourcc(函数)
一、简介
cv2.VideoWriter_fourcc
是 OpenCV 中用于定义视频编解码器的函数,它将四个字符的编码(FourCC)转换为一个用于视频编码器的整数。FourCC 是一种四字符编码,用于指定视频文件中使用的压缩方式。
二、语法和参数
语法
cv2.VideoWriter_fourcc(c1, c2, c3, c4)
参数
- c1, c2, c3, c4:表示四个字符的编码,每个字符是一个字符,代表不同的视频编码器。常用的编码器包括:
'XVID'
:常用于.avi
格式的视频文件。'MP4V'
:常用于.mp4
格式的视频文件。'MJPG'
:适用于使用 Motion JPEG 编码的视频。
返回值
返回一个整数,该整数用于创建 cv2.VideoWriter
对象时指定视频编码格式。
三、实例
3.1 使用 MP4V 编码器创建视频
此示例展示了如何使用 cv2.VideoWriter_fourcc
函数生成 MP4V 编码器并将其用于创建视频文件。
- 代码
import cv2
import numpy as np# 创建视频写入对象
output_path = 'output_video.mp4'
fourcc = cv2.VideoWriter_fourcc('M', 'P', '4', 'V')
fps = 20
frame_size = (640, 480)
out = cv2.VideoWriter(output_path, fourcc, fps, frame_size)# 生成并写入一些帧
for i in range(100):frame = np.zeros((480, 640, 3), dtype=np.uint8)cv2.putText(frame, f'Frame {i+1}', (100, 240), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)out.write(frame)# 释放视频写入对象
out.release()print("视频保存完成")
- 输出
输出:
视频保存完成
3.2 使用 XVID 编码器保存 AVI 视频
此示例展示了如何使用 cv2.VideoWriter_fourcc
函数生成 XVID 编码器并将其用于保存 .avi
格式的视频。
- 代码
import cv2# 打开摄像头
cap = cv2.VideoCapture(0)# 检查摄像头是否打开成功
if not cap.isOpened():print("无法打开摄像头")exit()# 设置视频写入对象,使用 XVID 编码保存为 .avi 文件
output_path = 'camera_output.avi'
fourcc = cv2.VideoWriter_fourcc('X', 'V', 'I', 'D')
fps = 20
frame_size = (int(cap.get(3)), int(cap.get(4)))
out = cv2.VideoWriter(output_path, fourcc, fps, frame_size)# 读取摄像头并保存视频
while cap.isOpened():ret, frame = cap.read()if not ret:breakout.write(frame)cv2.imshow('frame', frame)if cv2.waitKey(1) & 0xFF == ord('q'):break# 释放资源
cap.release()
out.release()
cv2.destroyAllWindows()print("视频保存完成")
- 输出
输出:
视频保存完成
四、注意事项
- 四字符编码(FourCC)必须与目标视频文件的格式相匹配。例如,
.mp4
通常使用'MP4V'
编码器,而.avi
常使用'XVID'
。 cv2.VideoWriter_fourcc
返回的是一个整数编码,该编码器将直接用于cv2.VideoWriter
函数中指定视频编码。- 不同平台可能支持不同的编码器,因此需要根据平台和应用选择合适的编码器。
- 使用不兼容的编码器和文件扩展名可能会导致视频文件无法正常播放。