opencvpython读取视频流并保存
时间: 2023-12-12 22:03:36 浏览: 218
IIC接口设计-python读取视频流提取视频帧的两种方法
要读取视频流并保存为视频文件,您可以使用OpenCV库中的`VideoWriter`类。以下是一个示例代码,演示了如何读取视频流并将其保存为视频文件:
```python
import cv2
# 打开视频文件
cap = cv2.VideoCapture('your_video_file.mp4') # 或者使用摄像头:cap = cv2.VideoCapture(0)
# 检查视频是否成功打开
if not cap.isOpened():
print("无法打开视频文件")
exit()
# 获取视频流的宽度和高度
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
# 创建用于保存视频的VideoWriter对象
fourcc = cv2.VideoWriter_fourcc(*'XVID') # 可根据需要选择视频编码器
out = cv2.VideoWriter('output_video.avi', fourcc, 20.0, (width, height))
while True:
# 逐帧读取视频流
ret, frame = cap.read()
# 检查是否已经到达视频末尾
if not ret:
break
# 在窗口中显示当前帧
cv2.imshow('Video', frame)
# 将当前帧写入输出视频文件
out.write(frame)
# 按下 'q' 键退出循环
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放资源
cap.release()
out.release()
cv2.destroyAllWindows()
```
在上述代码中,我们首先使用`cv2.VideoCapture()`函数打开视频文件或者连接到摄像头。然后,使用`cap.read()`逐帧读取视频流,并将每一帧显示在窗口中。同时,我们使用`cv2.VideoWriter()`创建一个用于保存视频的对象,并指定输出视频文件的名称、编码器、帧率和分辨率。在每一帧读取后,我们使用`out.write(frame)`将当前帧写入输出视频文件中。最后,我们需要释放资源,关闭窗口,并且调用`out.release()`来保存输出视频文件。
阅读全文