今天我们来使用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改个命名,否则下一次保存视频会把上一次的视频进行覆盖
运行完这两份代码后,对应的路径下保存的文件就会呈现出两个不同格式的视频文件





















