机器视觉学习(三)—— 保存视频流

目录

一、获取视频

二、知识拓展

三、典型代码举例


一、获取视频

要使用OpenCV保存视频,可以按照以下步骤进行操作:

"""OpenCV打开摄像头设置摄像头参数录制视频
"""

1.  导入必要的库:

import cv2

2.  创建一个VideoWriter对象:

#定义保存视频的文件名、编解码器、帧率和分辨率
filename = 'output.avi'
codec = cv2.VideoWriter_fourcc(*'XVID')
fps = 30.0
frame_size = (640, 480)#创建VideoWriter对象
video_writer = cv2.VideoWriter(filename, codec, fps, frame_size)

3.  从摄像头或者视频文件中读取帧:

#打开摄像头或者视频文件
cap = cv2.VideoCapture(0) #传入0表示打开默认摄像头
#cap = cv2.VideoCapture('input.avi') #传入视频文件名while True:#读取一帧ret, frame = cap.read()#显示帧cv2.imshow('Video', frame)#保存帧到视频文件video_writer.write(frame)#按下q键退出循环if cv2.waitKey(1) & 0xFF == ord('q'):break#释放资源
cap.release()
video_writer.release()
cv2.destroyAllWindows()"""
cv2.VideoCapture()          函数从摄像头或者视频文件中读取帧
cv2.imshow()                函数显示
video_writer.write()        函数将帧写入视频文件
cap.release()               释放摄像头或者视频文件资源
video_writer.release()      释放视频文件资源
cv2.destroyAllWindows()     关闭所有窗口
"""

二、知识拓展

个人笔记(仅供参考)

"""
图像显示:cv2.imshow(winname,img)winname:    窗口名称img:        显示的图像图层(通道)分离: cv2.split(img)img:    要分离的图像图层(通道)合并:cv2.merge(img)img:    要合并的色彩通道视频流读取:cv2.VideoCapture(filename)filename:       打开的摄像头设备或者打开的视频路径  cv2.VideoCapture(0)0:              读取摄像头, 0为摄像头索引,当有多个摄像头时,从 0开始编号视频流参数读改:cap(变量名).get(propId)                         获得视频的一些参数信息propId:                             可以是 0到 18之间的任何整数,即下表代码cap(变量名).get(3),cap.get(4)                   查看每一帧的宽和高,默认得到的值是 640x480cap(变量名).set(propId,value)                   修改参数value:                              想要设置成的新值cap(变量名).set(3,320),cap.set(4,240)           来把宽和高改成 320x240propId                              可以以数字代替,按顺序从0开始代码                       代替数字                                   代码                         代替数字          
CV_CAP_PROP_POS_MSEC                  0                             CV_CAP_PROP_BRIGHTNESS                  10
CV_CAP_PROP_POS_FRAMES                1                             CV_CAP_PROP_CONTRAST                    11
CV_CAP_PROP_POS_AVI_RATIO             2                             CV_CAP_PROP_SATURATION                  12                               
CV_CAP_PROP_FRAME_WIDTH               3                             CV_CAP_PROP_HUE                         13    
CV_CAP_PROP_FRAME_HEIGHT              4                             CV_CAP_PROP_GAIN                        14                                 
CV_CAP_PROP_FPS                       5                             CV_CAP_PROP_EXPOSURE                    15                                     
CV_CAP_PROP_FOURCC                    6                             CV_CAP_PROP_CONVERT_RGB                 16                                            
CV_CAP_PROP_FRAME_COUNT               7                             CV_CAP_PROP_WHITE_BALANCE               17                                      
CV_CAP_PROP_FORMAT                    8                             CV_CAP_PROP_RECTIFICATION               18                                  
CV_CAP_PROP_MODE                      9                                                                          视频流保存:VideoWriter(filename,fourcc,fps,frameSize)filename:           打开的摄像头设备或者打开的视频路径fourcc:             指定编码器  (编码器是将数据进行编制、转换为可用以通讯、传输和存储的信号形式的设备) fps:                要保存的视频的帧率frameSize:          要保存的文件的画面尺寸视频流接收:ret,frame = cam(变量名).read()cam(变量名).read()              返回一个布尔值ret                     接收布尔值,如果为 True,则说明每一帧图像都被正常读取frame                   用于接收得到的每一帧图片视频流编码设置:cv.VideoWriter_fourcc()常用编码格式有以下几种:Fourcc                                          视频文件后缀cv2.VideoWriter_fourcc('M', 'P', '4', 'V')                  .mp4cv2.VideoWriter_fourcc('X', 'V', 'I', 'D')                  .avicv2.VideoWriter_fourcc('I', '4', '2', '0')                  .avicv2.VideoWriter_fourcc('P', 'I', 'M', 'I')                  .avicv2.VideoWriter_fourcc('T', 'H', 'E', 'O')                  .ogvcv2.VideoWriter_fourcc('F', 'L', 'V', '1')                  .flv"""

三、典型代码举例

通过摄像头拍摄视频并保存到相应路径:

import cv2 as cvcap = cv.VideoCapture(0)                        # 读取摄像头
cap.set(cv.CAP_PROP_EXPOSURE,0)                 # 视频流参数读改       或者 cap.set(15,0) 
# cap.set(3,4080),cap.set(4,3060)               # 把窗口宽和高改成 4080x3060fourcc = cv.VideoWriter_fourcc(*"MJPG")
xin = cv.VideoWriter("xin_1.avi",fourcc,80,(640,480))                   # 视频流保存while(cap.isOpened()):                          # 用于判断 cap是否正常初始化,返回布尔值,正常则返回 Trueret,frame = cap.read()xin.write(frame)cv.imshow("CAP",frame)if cv.waitKey(1) == 27:                     # 等候 1ms,播放下一帧breakcap.release()
xin.release()
cv.destroyAllWindows()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/745244.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯--冶炼金属

目录 一、题目 二、解决代码 (1)版本一(报错:超时) 代码分析 (2)版本二(不会超时) 代码分析 (3)版本三(最终精简版)…

css新特性?

CSS(层叠样式表)作为网页样式设计的关键语言,在不断发展和更新中也引入了许多新的特性以提供更强大的样式控制和设计能力。以下是一些较新的 CSS 特性: CSS Grid 布局:CSS Grid 布局是一种二维布局系统,可以…

Python自学☞序列和索引的相关操作

一、基本概念 1、概念 序列是一个用于存储多个值的连续空间,每个值都对应一个整数的编号,称为索引 2、切片的语法结构 注:切片可以访问序列一定范围内的元素 序列[start:end:step] start-->切片的开始索…

Python数据分析-5

1.时间序列 2.pandas重采样 重采样:指的是将时间序列从一个频率转化为另一个频率进行处理的过程,将高频率数据转化为低频率数据为降采样,低频率转 化为高频率为升采样。 统计出911数据中不同月份电话次数的变化情况&#xff1a…

vue3中的文字滚动播报

vue3中的文字滚动播报 之前UI框架一直使用的elementPlus,有个需求,需要在页面上写个滚动播放新闻的功能,发现UI框架居然没有这个组件。花了一下午,在ChatGPT的帮助下,总算写成功了,先看最终展示效果 web页…

动态规划 Leetcode 474 一和零

一和零 Leetcode 474 学习记录自代码随想录 要点:1.背包容量为二维,物品重量为数组元素长度,价值为1; 2.仍是01背包问题,递推公式仿照 d p [ j ] m a x ( d p [ j ] , d p [ j − w e i g h t [ i ] ] v a l u e …

GPT-5:人工智能的下一个前沿即将到来

当我们站在人工智能新时代的门槛上时,GPT-5即将到来的呼声愈发高涨且迫切。作为革命性的GPT-3的继任者,GPT-5承诺将在人工智能领域迈出量子跃迁式的进步,其能力可能重新定义我们与技术的互动方式。 通往GPT-5之路 通往GPT-5的旅程已经标记着…

Unreal发布Android在刘海屏手机上不能全屏显示问题

Unreal 4.27发布Android在刘海屏手机上不能全屏显示问题 Android设置全屏刘海屏全屏设置4.27设置刘海屏在部分手机不能显示问题 Android设置全屏 AndroidManifest.xml文件配置 ...<activity android:name"com.epicgames.ue4.GameActivity" android:label"st…

给电脑加硬件的办法 先找电脑支持的接口,再买相同接口的

需求&#xff1a;我硬盘太小&#xff0c;换或加一个大硬盘 结论&#xff1a;接口是NVMe PCIe 3.0 x4 1.找到硬盘型号 主硬盘 三星 MZALQ512HALU-000L2 (512 GB / 固态硬盘) 2.上官网查 或用bing查 非官方渠道信息&#xff0c;不确定。

FFmpeg概念和简单使用

FFmpeg是一个开源的跨平台多媒体处理工具套件&#xff0c;包含了用于处理音频、视频和图像的各种工具、库和命令行程序。它由一个主要的命令行工具ffmpeg和一系列相关工具组成&#xff0c;可以执行各种各样的多媒体操作。以下是FFmpeg中一些重要的概念&#xff1a; 音频、视频和…

CompletableFuture原理与实践-外卖商家端API的异步化

背景 随着订单量的持续上升&#xff0c;美团外卖各系统服务面临的压力也越来越大。作为外卖链路的核心环节&#xff0c;商家端提供了商家接单、配送等一系列核心功能&#xff0c;业务对系统吞吐量的要求也越来越高。而商家端API服务是流量入口&#xff0c;所有商家端流量都会由…

【深度学习笔记】9_5 多尺度目标检测

注&#xff1a;本文为《动手学深度学习》开源内容&#xff0c;部分标注了个人理解&#xff0c;仅为个人学习记录&#xff0c;无抄袭搬运意图 9.5 多尺度目标检测 在9.4节&#xff08;锚框&#xff09;中&#xff0c;我们在实验中以输入图像的每个像素为中心生成多个锚框。这些…

springboot+vue学生选课系统 java+ssm+idea+_mysql

系统包含三种角色&#xff1a;管理员、老师、学生&#xff0c;系统分为前台和后台两大模块&#xff0c;主要功能如下。 ide工具&#xff1a;IDEA 或者eclipse 编程语言: java 学生网上选课系统可以实现教室管理&#xff0c;老师管理&#xff0c;课程管理&#xff0c;教学计划管…

微服务分布式springcloud研究生志愿填报辅助系统

本文讲述了研究生志愿填报辅助系统。结合电子管理系统的特点&#xff0c;分析了研究生志愿填报辅助系统的背景&#xff0c;给出了研究生志愿填报辅助系统实现的设计方案。 本论文主要完成不同用户的权限划分&#xff0c;不同用户具有不同权限的操作功能&#xff0c;在用户模块&…

AJAX 03 XMLHttpRequest、Promise、封装简易版 axios

AJAX 学习 AJAX 3 原理01 XMLHttpRequest① XHR 定义② XHR & axios 关系③ 使用 XHR④ XHR查询参数案例&#xff1a;地区查询&#xff08;URLSearchParams&#xff09;⑤ XHR数据提交 POST 02 PromisePromise 使用Promise - 三种状态案例&#xff1a;使用Promise XHR 获取…

电商场景下 ES 搜索引擎的稳定性治理实践

继上文在完成了第一阶段 ES 搜索引擎的搭建后&#xff0c;已经能够实现对千万级别的商品索引的读写请求的支持。目前&#xff0c;单机房读流量在 500&#xff5e;1000 QPS 之间&#xff0c;写流量在 500 QPS 左右。 但随着业务的发展&#xff0c;问题也逐渐开始暴露&#xff0…

acw_sc__v2,cookie生成逻辑

好久之前碰到过的acw_sc__v2&#xff0c;最近又碰到了 重新又回顾了一下&#xff0c;检测点就只有几个正则啥的 废话不对说&#xff0c;直接上代码把 String.prototype["unsbox"] function() {var _0x4b082b [15, 35, 29, 24, 33, 16, 1, 38, 10, 9, 19, 31, 40, …

spring-cloud-starter-openfeign 4.0.4配置超时时间和默认重试机制,测试超时场景

配置超时时间application.yml spring:cloud:openfeign:client:config:testClient:connectTimeout: 1000readTimeout: 10000loggerLevel: basicretryer: feign.Retryer.Default配置openfeignclient日志打印 logging:level:root: DEBUGopenfeignclient服务 Controller public …

【C/C++ 学习笔记】指针

【C/C 学习笔记】指针 视频地址: Bilibili 概念 可以通过指针间接访问内存用于保存地址 使用 通过 & 可以获取数据的指针 通过 * 可以取得指针的数据 指针的数据类型就是 数据类型 * int number 10;int *p &number;// 10 cout << "number: " …

P2572 [SCOI2010] 序列操作 线段树维护连续子段和(01串)

浅调两个钟&#xff0c;终于A掉了&#xff0c;还是不熟练啊 这道题是P4513 小白逛公园 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)的变种 维护的更多&#xff0c;可以说&#xff0c;在维护连续的1&#xff0c;实质上就是维护最大连续子段和。 0 l r 把 [l,r] 区间内的所…