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

Opencv 视频的读取与写入

目录

前言 

通过路径获取视频内容 

获取视频内容

检查是否正确打开

 循环播放

完整代码

从摄像头读取视频数据

获取视频设备

其他与直接读取视频一致

完整实例

录制视频 

用于创建视频编解码器的四字符码(FourCC)

cv2.VideoWriter()

将视频帧逐帧写入视频文件

完整示例


前言 

- 视频是由图片组成的, 视频的每一帧就是一幅图片, 一般是30帧, 表示一秒显示30张图片.- cv2.VideoCapture可以捕获摄像头, 用数字来表示不同的设备, 比如0, 1- 如果是视频文件, 可以直接指定路径即可.

通过路径获取视频内容 

获取视频内容

vc = cv2.VideoCapture(path)

检查是否正确打开

vc.isOpened()  # 可以读到内容返回True

 循环播放

播放视频就是不停的换图像帧,即循环调用  vc.read()    和   cv2.imshow()

完整代码

import cv2
# 打开视频文件
def open_video(path):vc = cv2.VideoCapture(path)ret = vc.isOpened()  # 可以读到内容返回True# 检查是否正确打开if ret:print("视频打开成功")else:print("视频打开失败")return -1print(f"开始播放视频:  {path.split('/').pop()},按esc键退出")# 循环读帧播放视频while ret:# 可以读到内容ret返回Trueret, frame = vc.read()# 读到最后frame就是空if frame is None:print("视频播放完毕")breakif ret:cv2.imshow('{}'.format(path).split('/').pop(), frame)# 0xFF == 27表示按esc退出键会退出if cv2.waitKey(33) & 0xFF == 27:break# 释放视频对象vc.release()# 关闭窗口cv2.destroyAllWindows()open_video("videos/1.mp4")

从摄像头读取视频数据

获取视频设备

cap = cv2.VideoCapture(0)

其他与直接读取视频一致

完整实例

import cv2# 从摄像头一直读取数据
def camera():# 获取视频设备cap = cv2.VideoCapture(0)print("获取视频设备成功")ret = cap.isOpened()# 创建窗口cv2.namedWindow('video', cv2.WINDOW_NORMAL)cv2.resizeWindow('video', 640, 480)print("成功创建窗口")print("开始播放来自摄像头的视频,按esc键退出)while ret:# 从摄像头读取视频ret, frame = cap.read()# 将视频帧放在窗口中显示cv2.imshow('video', frame)# 等待键盘事件, 按esc键会退出if cv2.waitKey(33) & 0xFF == 27:break# 释放摄像头cap.release()print("摄像头已关闭")# 关闭窗口cv2.destroyAllWindows()
camera()

录制视频 

- VideoWriter : 参数一为输出文件, 参数二为多媒体文件格式(VideoWriter_fourcc),
参数三为帧率, 参数四为分辨率.
- write 编码并写入缓存
- release 缓存内容写入磁盘, 并释放资源

用于创建视频编解码器的四字符码(FourCC)

fourcc = cv2.VideoWriter_fourcc(*'mp4v')  

cv2.VideoWriter()

vm = cv2.VideoWriter('output.mp4', fourcc, 20, (640, 480))

'output.mp4' 是输出视频文件的名称,fourcc 是所选的视频编码器,20 是帧率,(640, 480) 是视频的分辨率。

 

将视频帧逐帧写入视频文件

vw.write(frame)

完整示例

import cv2# 录制视频
def record_video():# 获取视频设备cap = cv2.VideoCapture(1)print("获取视频设备成功")# *mp4v就是解包操作 等同于  'm', 'p', '4', 'v'fourcc = cv2.VideoWriter_fourcc(*'mp4v')  # 用于创建视频编解码器的四字符码(FourCC)。# (640, 480)表示摄像头拍视频, 这个大小搞错了也不行,主要是这个分辨率.vw = cv2.VideoWriter('output.mp4', fourcc, 20, (640, 480))# 'output.mp4' 是输出视频文件的名称,fourcc 是所选的视频编码器,20 是帧率,(640, 480) 是视频的分辨率。print("开始录制来自摄像头的视频,按esc键退出")# 循环存帧录制视频while cap.isOpened():ret, frame = cap.read()if not ret:print('没有接收到图像')breakvw.write(frame)  # 将视频帧逐帧写入视频文件。cv2.imshow('frame', frame)  # 显示录制的帧if cv2.waitKey(33) & 0xFF == 27:break# 释放摄像头cap.release()print("摄像头已关闭")record_video()

 

相关文章:

Opencv 视频的读取与写入

目录 前言 通过路径获取视频内容 获取视频内容 检查是否正确打开 循环播放 完整代码 从摄像头读取视频数据 获取视频设备 其他与直接读取视频一致 完整实例 录制视频 用于创建视频编解码器的四字符码(FourCC) cv2.VideoWriter() 将视频帧…...

LeetCode 833. Find And Replace in String【字符串,哈希表,模拟】1460

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...

Cesium轨迹漫游及视角切换

飞行漫游,就是让Camera飞行。Camera有一些方法可以实现位置、视角的调整,比如flyTo,setView方法。但这些方法并不能沿着我们想要的路径调整,在通过插值的方法不停的调用setView,但这样会造成视图卡顿,而且计…...

构建去中心化微服务集群,满足高可用性和高并发需求的实践指南!

随着互联网技术的不断发展,微服务架构已经成为了开发和部署应用程序的一种主流方式。然而,当应用程序需要满足高可用性和高并发需求时,单一中心化的微服务架构可能无法满足性能和可靠性的要求。因此,构建一个去中心化的微服务集群…...

开集输出和开漏输出

​​​​​​ 首先指明一下以下8中GPIO输入输出模式: GPIO_Mode_AIN 模拟输入; GPIO_Mode_IN_FLOATING 浮空输入; GPIO_Mode_IPD 下拉输入; GPIO_Mode…...

解决内网GitLab 社区版 15.11.13项目拉取失败

问题描述 GitLab 社区版 发布不久,搭建在内网拉取项目报错,可能提示 unable to access https://github.comxxxxxxxxxxx: Failed to connect to xxxxxxxxxxxxxGit clone error - Invalid argument error:14077438:SSL routines:SSL23_GET_S 15.11.13ht…...

【MySQL--->表的约束】

文章目录 [TOC](文章目录) 一、表的约束概念二、空属性约束三、default约束四、zerofill约束五、主键约束六、auto_increment(自增长)约束七、唯一键约束八、外键约束 一、表的约束概念 表通过约束可以保证插入数据的合法性,本质是通过技术手段,保证插入数据收约束,保证数据的…...

github中Keyless Google Maps API在网页中显示地图和标记 无需api key

使用Google Maps API在网页中显示地图和标记的示例博客。以下是一个简单的示例: C:\pythoncode\blog\google-map-markers-gh-pages\google-map-markers-gh-pages\index.html 介绍: 在本篇博客中,我们将学习如何使用Google Maps API在网页中…...

ComPDFKit PDF SDK for Windows Crack

ComPDFKit PDF SDK for Windows Crack 添加了在创建文本框时调整默认属性的支持。 增加了对调整PDF大小时调整宽度的支持。 添加了对编辑文本时更多快捷方式的支持。 优化了文本输入,并将字体样式与原始文本相匹配。 在内容编辑器模式下复制和粘贴时优化了UI交互。 …...

React+Typescript 状态管理

好 本文 我们来说说状态管理 也就是我们的 state 我们直接顺便写一个组件 参考代码如下 import * as React from "react";interface IProps {title: string,age: number }interface IState {count:number }export default class hello extends React.Component<I…...

stable diffusion 运行时报错: returned non-zero exit status 1.

运行sh run.sh安装stable diffusion时报错&#xff1a;ImportError: cannot import name builder from google.protobuf.internal (stable-diffusion-webui/venv/lib/python3.8/site-packages/google/protobuf/internal/__init__.py) 原因&#xff1a;python版本过低&#xff0…...

el-popover弹窗修改三角样式或者位置

el-popover中设置类名 popper-class"filepopver"&#xff0c;我这位置是placement"top-start" <el-popover placement"top-start" popper-class"filepopver" class"filename" width"300" trigger"hover&q…...

Linux驱动开发之点亮三盏小灯

头文件 #ifndef __HEAD_H__ #define __HEAD_H__//LED1和LED3的硬件地址 #define PHY_LED1_MODER 0x50006000 #define PHY_LED1_ODR 0x50006014 #define PHY_LED1_RCC 0x50000A28 //LED2的硬件地址 #define PHY_LED2_MODER 0x50007000 #define PHY_LED2_ODR 0x50007014 #define…...

【SA8295P 源码分析】71 - QAM8295P 原理图参考设计 之 MIPI DSI 接口硬件原理分析

【SA8295P 源码分析】71 - QAM8295P 原理图参考设计 之 MIPI DSI 接口硬件原理分析 一、MIPI-DSI 接口介绍二、高通参考硬件原理图分析:ANX7625 桥接芯片方案2.1 高通参考设计:两路 4-Lane DSI 接口2.2 高通参考设计:DSI0 硬件原理图,将 4 Lane DSI数据通过 ANX7625 桥接芯…...

macOS(m1/m2)破解Sublime Text和Navicat16

破解Sublime Text 说明&#xff1a;全程使用的是终端操作 1. 下载Sublime Text&#xff0c;建议使用brew下载 2. 进入到下载的app的文件夹 cd "/Applications/Sublime Text.app/Contents/MacOS/"3. 执行以下操作以确认版本是否匹配 md5 -q sublime_text | grep -i…...

【排排站:探索数据结构中的队列奇象】

本章重点 队列的概念及结构 队列的实现方式 链表方式实现栈接口 队列面试题 一、队列的概念及结构 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先进先出 FIFO(First In First Out) 入队列&#x…...

Mac OS 中JDK 环境(jdk 1.8.0_831)安装配置、环境变量配置及卸载操作

前言&#xff1a; 摊牌了&#xff0c;本来就有点喜新厌旧的我&#xff0c;特意把系统和开发环境都拉到比较高&#xff0c;想试验一下兼容性和某些新特性&#xff0c;探索了一下新大陆&#xff0c;也见识了各种光怪陆离的妖魔鬼怪。 因为要着手云平台项目的重构改版和新系统的架…...

[JAVAee]Tomcat - Servlet

目录 Tomcat Servlet的工作 创建Servlet ①项目 ②依赖 ③目录 ④代码 ⑤打包 ⑥部署 ⑦验证 Servlet的运行原理 Servlet API HttpServlet 方法 处理Get/POST请求 HttpServletRequest 方法 获取请求中的信息 获取GET请求中的参数 获取POST请求中的参数…...

MAC钓鱼并Root权限上线CS并权限维持,以及所有的坑如何解决

本文转载于&#xff1a;https://www.freebuf.com/articles/web/350592.html 作者&#xff1a;文鸯涂鸦智能安全实验室 制作MAC 一、下载工具 首先从github上下载CrossC2。链接&#xff1a;https://github.com/gloxec/CrossC2/releases/tag/v3.1.0。 根据你CS客户端的操作系统选…...

浅谈OCR中的David Shepard

在OCR&#xff08;Optical Character Recognition&#xff0c;光学字符识别&#xff09;中&#xff0c;David Shepard是一种早期的OCR技术&#xff0c;也被称为Shepards Method。 David Shepard是该OCR方法的原始作者。这种方法基于边界追踪算法&#xff0c;用于识别印刷体文本…...

draw.io导出矢量图到word报错text is not svg - cannot display

先参考https://blog.csdn.net/a625750076/article/details/126384831 如果不行&#xff0c;可能是转存的问题 解决方法&#xff1a;直接在draw.io上操作 第一步 第二步 然后再word中粘贴&#xff0c;依旧是矢量图哦&#xff01;...

JVM加强

目录 JVM运行时的数据区&#xff08;内存结构&#xff09;&#xff1a; 线程独享&#xff1a; 线程共享&#xff1a; 什么时候会内存溢出 JVM有哪些垃圾回收算法 GC如何判断对象可以被回收 典型的垃圾回收器 CMS&#xff1a; G1&#xff1a; 类加载器和双亲委派机制&a…...

解决Oracle中XML插入数据时的空格问题

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…...

微服务中间件--分布式事务

分布式事务 a.理论基础1) CAP定理2) BASE理论 b.Seata1) XA模式1.a) 实现XA模式 2) AT模式3) TCC模式3.a) 代码实现 4) Saga模式5) 四种模式对比6) TC的异地多机房容灾架构 a.理论基础 1) CAP定理 分布式系统有三个指标&#xff1a; Consistency&#xff08;一致性&#xff…...

计算机网络(9) --- 数据链路层与MAC帧

计算机网络&#xff08;8&#xff09; --- IP与IP协议_哈里沃克的博客-CSDN博客IP与IP协议https://blog.csdn.net/m0_63488627/article/details/132155460?spm1001.2014.3001.5502 目录 1.MAC帧 1.MAC地址 2.MAC帧报头 3.资源碰撞 4.MTU 1.对IP协议的影响 2.对UDP协议…...

【学会动态规划】环绕字符串中唯一的子字符串(25)

目录 动态规划怎么学&#xff1f; 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后&#xff1a; 动态规划怎么学&#xff1f; 学习一个算法没有捷径&#xff0c;更何况是学习动态规划&#xff0c; 跟我…...

CNN卷积详解(三)

一、卷积层的计算 4 ∗ * ∗ 4的输入矩阵 I I I 和 3 ∗ * ∗ 3 的卷积核 K K K: 在步长&#xff08;stride&#xff09;为 1 时&#xff0c;输出的大小为 ( 4 − 3 1 ) ( 4 − 3 1) 计算公式&#xff1a; ● 输入图片矩阵 I I I 大小&#xff1a; w w w w ww ●…...

使用 Amazon Redshift Serverless 和 Toucan 构建数据故事应用程序

这是由 Toucan 的解决方案工程师 Django Bouchez与亚马逊云科技共同撰写的特约文章。 带有控制面板、报告和分析的商业智能&#xff08;BI&#xff0c;Business Intelligence&#xff09;仍是最受欢迎的数据和分析使用场景之一。它为业务分析师和经理提供企业的过去状态和当前状…...

CentOS 上快速安装包管理工具Conda

要在 CentOS 上安装 Conda&#xff0c;您可以按照以下步骤进行操作&#xff1a; 1. 下载 Miniconda 或 Anaconda 安装脚本&#xff1a; Miniconda&#xff1a;适用于轻量级安装的 Miniconda 版本。 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.…...

opencv-手势识别

# HandTrackingModule.py import cv2 import mediapipe as mpclass HandDetector:"""使用mediapipe库查找手。导出地标像素格式。添加了额外的功能。如查找方式&#xff0c;许多手指向上或两个手指之间的距离。而且提供找到的手的边界框信息。"""…...

高级经济师/seo推广知识

Daniel2cscanf我不知道为什么,当我运行它时,它会跳过"书中有多少页" scanf并直接进入第二个循环"谁是作者".我确定这与空白有关,但我认为我用getcharfor循环的底部来解释这个问题.标题:struct bookInfo{char title[40];char author[25];float price;int pa…...

网站开发简单的框架/关键路径

当我们在进行数据分析时&#xff0c;除了对比现有的数据信息外&#xff0c;还能通过现有的数值计算出其他变量的参数。不过这就需要用到IBM SPSS Statistics中计算变量命令了。今天&#xff0c;我就以一组产品销售的数据为例&#xff0c;向大家演示一下SPSS计算变量的操作方法。…...

有没有做淘宝客网站的/网络推广员是干嘛的

Java设计模式——工厂模式Java设计模式——工厂模式1 概述2 简单工厂模式2.1 结构2.2 实现2.4 优缺点3 工厂方法模式3.1 概念3.2 结构3.3 实现3.4 优缺点4 抽象工厂模式4.1 概念4.2 结构4.2 实现4.3 优缺点4.4 使用场景5 模式扩展6 JDK源码解析-Collection.iterator方法Java设计…...

沧州市做网站价格/2023年的新闻十条

声明&#xff1a;本文引用吴恩达教授的DeepLearning课程内容。 滑动窗口法的卷积实现虽然效率更高&#xff0c;但仍然存在问题&#xff0c;不能输出最精准的边界框。因为滑动窗口法中&#xff0c;取这些离散的位置集合并不能完全匹配目标大小、位置。 其中一个能得到更精准边界…...

星沙做淘宝店铺网站/百度搜索资源管理平台

visible, disable, css绑定 这个例子非常简单&#xff0c;主要演示如何通过属性控制html元素的显示与否&#xff08;visible&#xff09;&#xff0c;可用性&#xff08;disable&#xff09;以及根据属性添加相应的CSS样式。 先简单的看一段代码&#xff1a; <p><inpu…...

网站建设陆金手指下拉壹玖/互联网推广销售

1.New a python project 2.cd %project.home%切换到项目根目录3.运行setup.bat创建venv虚拟环境 (注意内网运行setup.bat需要手动将requirements.txt需要的安装包下载下到dependency目录(pip download -d ./dependency -r requirements.txt),外网直接运行&#xff09;4。等待安…...