树莓派5_opencv笔记27:Opencv录制视频(无声音)

发布于:2024-09-18 ⋅ 阅读:(127) ⋅ 点赞:(0)

 今日继续学习树莓派5 8G:(Raspberry Pi,简称RPi或RasPi)

 本人所用树莓派5 装载的系统与版本如下:

 版本可用命令 (lsb_release -a) 查询:

Opencv 与 python 版本如下:

今天就水一篇文章,用树莓派摄像头,Opencv录制一段视频保存在指定目录...

文章提供测试代码讲解,整体代码贴出、测试效果图

目录

阶段一:录制一段视频

阶段二:录视频保存在指定文件目录


阶段一:录制一段视频

我们一个一个阶段来编写代码,这个阶段代码实现的是打开摄像头开始录制,直到键盘按下Q退出,保存方才的录制为视频文件.avi   在代码同一个目录下

import cv2  
  
# 定义保存视频的参数  
fourcc = cv2.VideoWriter_fourcc(*'XVID')  # 定义编码器  
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640,  480))  # 创建VideoWriter对象  
  
# 打开摄像头  
cap = cv2.VideoCapture(0)  # 0通常是你的默认摄像头  
  
if not cap.isOpened():  
    print("Error: Cannot open camera")  
    exit()  
  
while True:  
    # 逐帧捕获  
    ret, frame = cap.read()  
  
    if not ret:  
        print("Can't receive frame (stream end?). Exiting ...")  
        break  
  
    # 显示结果帧  
    cv2.imshow('frame', frame)  
  
    # 写入帧到文件  
    out.write(frame)  
  
    # 按'q'键退出循环  
    if cv2.waitKey(1) & 0xFF == ord('q'):  
        break  
  
# 释放捕获  
cap.release()  
out.release()  
cv2.destroyAllWindows()

阶段二:录视频保存在指定文件目录

此时可以看到录制结束的视频保存在对应文件夹目录了:

import cv2  
import os  
  
# 定义保存视频的目录和文件名  
save_dir = '/home/pi/Code_examples/Videos'  # 替换为你的目录路径  
filename = 'my_custom_video.avi'  # 这里你可以自定义文件名  
  
# 确保目录存在,如果不存在则创建它  
if not os.path.exists(save_dir):  
    os.makedirs(save_dir)  
  
# 完整的文件路径  
full_path = os.path.join(save_dir, filename)  
  
# 定义保存视频的参数  
fourcc = cv2.VideoWriter_fourcc(*'XVID')  # 定义编码器  
fps = 20.0  # 帧率  
frame_size = (640, 480)  # 分辨率  
  
# 创建VideoWriter对象  
out = cv2.VideoWriter(full_path, fourcc, fps, frame_size)  
  
# 打开摄像头  
cap = cv2.VideoCapture(0)  # 0通常是你的默认摄像头  
  
if not cap.isOpened():  
    print("Error: Cannot open camera")  
    exit()  
  
# 捕获并保存视频帧  
while True:  
    ret, frame = cap.read()  
    if not ret:  
        print("Can't receive frame (stream end?). Exiting ...")  
        break  
      
    # 显示帧(可选)  
    cv2.imshow('frame', frame)  
      
    # 写入帧到文件  
    out.write(frame)  
      
    # 按'q'键退出循环  
    if cv2.waitKey(1) & 0xFF == ord('q'):  
        break  
  
# 释放资源  
cap.release()  
out.release()  
cv2.destroyAllWindows()


网站公告

今日签到

点亮在社区的每一天
去签到