使用OpenCV库来捕获摄像头视频流,并按指定格式保存

今天我们来使用OpenCV库来捕获摄像头视频流,并将其保存为AVI格式的视频文件,

代码的主要功能包括:

  1. 初始化摄像头捕获对象。
  2. 设置视频编解码器和输出文件路径。
  3. 循环读取视频帧,处理并保存到文件中。
  4. 显示处理后的视频帧。
  5. 按下'q'键退出程序。
  6. 释放资源并关闭所有窗口。
  • 运行环境需要安装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就是你实际想要保存视频的路径 ,如果实在不知道路径,可以打开资源管理器进行查看,如下图所示

使用OpenCV库来捕获摄像头视频流,并按指定格式保存_第1张图片

这两份代码只是保存的视频格式不一样,处理方法都是一样的,运行完以后会有一个叫frame的cv窗口出现,这里显示的图像是实时进行录制的图像

使用OpenCV库来捕获摄像头视频流,并按指定格式保存_第2张图片

 注意如果需要录制多个视频,需要修改代码中视频的命名,也就是这一行

out = cv2.VideoWriter('path\\output.mp4', fourcc, 30.0, (640, 480))  

把output改个命名,否则下一次保存视频会把上一次的视频进行覆盖

运行完这两份代码后,对应的路径下保存的文件就会呈现出两个不同格式的视频文件

使用OpenCV库来捕获摄像头视频流,并按指定格式保存_第3张图片

使用OpenCV库来捕获摄像头视频流,并按指定格式保存_第4张图片

你可能感兴趣的:(基础常见知识,opencv,计算机视觉)