目的
打开摄像头进行录制视频,存储10s左右的视频,格式为mp4。
代码
import cv2
# 打开笔记本内置摄像头
capture = cv2.VideoCapture(0, cv2.CAP_DSHOW)
# 检查摄像头是否成功打开
if not capture.isOpened():
print("Error: Could not open video capture.")
exit()
# 确定视频被保存后的编码格式
fourcc = cv2.VideoWriter_fourcc(*'XVID')
fps = 20.0 # 使用浮点数来代表帧率更为准确
record_time = 10 # 时长(秒)
frame_count = int(fps * record_time) # 计算需要捕获的帧数
# 创建VideoWriter类对象,设置视频大小与摄像头当前大小一致
frame_width = int(capture.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(capture.get(cv2.CAP_PROP_FRAME_HEIGHT))
output = cv2.VideoWriter("ten_Seconds.avi", fourcc, fps, (frame_width, frame_height))
# 开始捕获视频帧
frame_num = frame_count
while capture.isOpened() and frame_num > 0:
ret, frame = capture.read()
if ret:
output.write(frame)
cv2.imshow("frame", frame)
# 按'q'键退出循环
if cv2.waitKey(1) & 0xFF == ord('q'):
break
frame_num -= 1
# 释放资源
capture.release()
output.release()
cv2.destroyAllWindows()
常用的编码
fourcc的值 | 视频编码格式 | 文件扩展名 |
---|---|---|
cv2.VideoWriter_fourcc('T', '4', '2', '0') | 未压缩的YUV颜色编码格式,兼容性好,但文件较大 | .avi |
cv2.VideoWriter_fourcc('P', 'I', 'M', '1') | MPEG-1编码格式 | .avi |
cv2.VideoWriter_fourcc('X', 'V', 'I', 'D') | MPEG-4编码格式,视频文件的大小为平均值 | .avi |
cv2.VideoWriter_fourcc('T', 'H', 'E', 'O') | Ogg Theora 编码格式,兼容性差 | .ogv |
cv2.VideoWriter_fourcc('F', 'L', 'V', '1') | Flash视频编码格式 | .flv |