今天我们来使用OpenCV库来捕获摄像头视频流,并将其保存为AVI格式的视频文件,
代码的主要功能包括:
- 初始化摄像头捕获对象。
- 设置视频编解码器和输出文件路径。
- 循环读取视频帧,处理并保存到文件中。
- 显示处理后的视频帧。
- 按下'q'键退出程序。
- 释放资源并关闭所有窗口。
- 运行环境需要安装OpenCV库,可以通过
pip install opencv-python
安装。
下面这份代码的保存视频的格式是AVI
import numpy as np
import cv2
# 初始化摄像头
cap = cv2.VideoCapture(0)
# 检查摄像头是否成功打开
if not cap.isOpened():
print("Error: Cannot open camera.")
exit()
# 设置视频编码、输出路径、帧率、分辨率
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('path\output.avi', fourcc, 30.0, (640, 480))
while cap.isOpened():
ret, frame = cap.read()
# 检查是否成功读取到帧
if ret:
# 水平翻转帧
frame = cv2.flip(frame, 1)
# 写入翻转后的帧到视频文件
out.write(frame)
# 显示帧
cv2.imshow('frame', frame)
# 按'q'键退出循环
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
# 如果读取帧失败,则跳出循环
break
# 释放摄像头和视频写入对象
cap.release()
out.release()
# 关闭所有OpenCV窗口
cv2.destroyAllWindows()
但是往往这种格式我们不是想要的,更多的是使用MP4格式
import numpy as np
import cv2
# 初始化摄像头
cap = cv2.VideoCapture(0)
# 检查摄像头是否成功打开
if not cap.isOpened():
print("Error: Cannot open camera.")
exit()
# 设置视频编码、输出路径、帧率、分辨率
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter('path\\output.mp4', fourcc, 30.0, (640, 480))
while cap.isOpened():
ret, frame = cap.read()
# 检查是否成功读取到帧
if ret:
# 水平翻转帧
frame = cv2.flip(frame, 1)
# 写入翻转后的帧到视频文件
out.write(frame)
# 显示帧
cv2.imshow('frame', frame)
# 按'q'键退出循环
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
# 如果读取帧失败,则跳出循环
break
# 释放摄像头和视频写入对象
cap.release()
out.release()
# 关闭所有OpenCV窗口
cv2.destroyAllWindows()
代码中的path就是你实际想要保存视频的路径 ,如果实在不知道路径,可以打开资源管理器进行查看,如下图所示
这两份代码只是保存的视频格式不一样,处理方法都是一样的,运行完以后会有一个叫frame的cv窗口出现,这里显示的图像是实时进行录制的图像
注意如果需要录制多个视频,需要修改代码中视频的命名,也就是这一行
out = cv2.VideoWriter('path\\output.mp4', fourcc, 30.0, (640, 480))
把output改个命名,否则下一次保存视频会把上一次的视频进行覆盖
运行完这两份代码后,对应的路径下保存的文件就会呈现出两个不同格式的视频文件