当前位置: 首页 > news >正文

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

 今日继续学习树莓派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()

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 使用Spring Boot集成Spring Data JPA和单例模式构建库存管理系统
  • v0.dev快速开发
  • 两数之和--力扣1
  • JS手写实现深拷贝
  • 深入探究 Spring 的扫描原理
  • 探索国产编程工具:如何实现工作效率翻倍
  • VMware安装Ubuntu虚拟机
  • linux 安装redis
  • 以太网--TCP/IP协议(一)
  • “阡陌云旅”黄河九省文化旅游平台
  • LabVIEW FIFO详解
  • docker容器高效连接 Redis 的方式
  • LabVIEW灵活集成与调试的方法
  • 【Hot100】LeetCode—763. 划分字母区间
  • 线程的四种操作
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 10个确保微服务与容器安全的最佳实践
  • Docker下部署自己的LNMP工作环境
  • Elasticsearch 参考指南(升级前重新索引)
  • IDEA 插件开发入门教程
  • Idea+maven+scala构建包并在spark on yarn 运行
  • Java 多线程编程之:notify 和 wait 用法
  • Java的Interrupt与线程中断
  • Median of Two Sorted Arrays
  • PermissionScope Swift4 兼容问题
  • python docx文档转html页面
  • Vue ES6 Jade Scss Webpack Gulp
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 利用jquery编写加法运算验证码
  • 人脸识别最新开发经验demo
  • 如何选择开源的机器学习框架?
  • 收藏好这篇,别再只说“数据劫持”了
  • 我感觉这是史上最牛的防sql注入方法类
  • 小程序 setData 学问多
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 最近的计划
  • 我们雇佣了一只大猴子...
  • ​520就是要宠粉,你的心头书我买单
  • ​人工智能书单(数学基础篇)
  • ​如何防止网络攻击?
  • ‌JavaScript 数据类型转换
  • #java学习笔记(面向对象)----(未完结)
  • $(selector).each()和$.each()的区别
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (12)Hive调优——count distinct去重优化
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (vue)el-tabs选中最后一项后更新数据后无法展开
  • (web自动化测试+python)1
  • (分布式缓存)Redis分片集群
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (佳作)两轮平衡小车(原理图、PCB、程序源码、BOM等)
  • (六)激光线扫描-三维重建
  • (十六)串口UART