Python+Opencv图像处理新手入门教程(四):视频内容的读取与导出
一步一步来吧
上一节:
Python+Opencv图像处理新手入门教程(三):阈值与二值化
1.Intro
今天这节我们主要看怎么利用opencv读取并处理视频中的内容。
2.VideoCapture
2.1.基本用法
cap = cv2.VideoCapture(src)
其中src指的是视频的路径。例如,我们可以指定视频来源为某个文件:
cap = cv2.VideoCapture('xxx.avi')
也可以指定视频来源为电脑的摄像头:
cap = cv2.VideoCapture(0)
这里的0表示摄像头id,如果有多个摄像头的话则可以顺次指定其他摄像头。
而对于读取到的视频流我们也可以进行一些参数的修改,例如:
cap.set(cv2.CAP_PROP_FRAME_WIDTH, w)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, h)
便可以将视频流的宽度、高度分别指定为w,h。需要注意的是,当修改宽度时,高度也会进行等比例的缩放,反之亦然。此时可以通过:
cap.get(cv2.CAP_PROP_FRAME_WIDTH)
cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
来获取当前视频流的宽度和高度。
除此之外,一些常用的参数还有:
- cv2.CAP_PROP_FPS:帧率
- cv2.CAP_PROP_FOURCC:编解码器的4字符代码
- cv2.CAP_PROP_FRAME_COUNT:(视频文件中的)总帧数
2.2.read
上一步中的VideoCapture获取的是一个视频流,那么接下来我们就可以从这个流中来逐帧的读取图像。读取一帧图像使用的是read方法:
ret, frame = cap.read()
- ret:布尔值,表示是否成功读取一帧
- frame:获取到的帧
至此,我们可以写出如下代码,其功能是读取电脑摄像头的图像并实时展示:
import cv2
cap = cv2.VideoCapture(0)
while True:ret, frame = cap.read()if ret == True:cv2.imshow('frame', frame)# 按q退出,通过右上角关闭按钮退出可能导致程序崩溃if cv2.waitKey(1)& 0xFF == ord('q'):break
# 释放摄像头
cap.release()
# 销毁所有窗口
cv2.destroyAllWindows()
3.VideoWriter
顾名思义,VideoWriter的作用就是导出视频了。
out = cv2.VideoWriter(name, fourcc, fps, (w, h))
- out:一个video writer对象,用于后续向其中写入帧。
- name:输出视频文件的名称(路径)
- fourcc:编码器
- fps:输出帧率
- w:输出视频宽度
- h:输出视频高度
编码器为VideoWriter_fourcc,其用法如下:
fourcc = cv2.VideoWriter_fourcc(encode)
其中encode为编码。所谓fourcc,意思就是这个编码有四个字符(Four-Character Codes)。常见的编码如下:
- cv2.VideoWriter_fourcc(‘I’, ‘4’, ‘2’, ‘0’):YUV编码,后缀为avi
- cv2.VideoWriter_fourcc(‘P’, ‘I’, ‘M’, ‘I’),MPEG-1编码,后缀为avi
- cv2.VideoWriter_fourcc(‘X’, ‘V’, ‘I’, ‘D’),MPEG-4编码,后缀为avi
- cv2.VideoWriter_fourcc(‘T’, ‘H’, ‘E’, ‘O’),Ogg Vorbis编码,后缀为ogv
- cv2.VideoWriter_fourcc(‘F’, ‘L’, ‘V’, ‘1’),Flash编码,后缀为flv
至此,我们可以写出如下代码,其能录制电脑摄像头的一段视频,并存储为output.avi:
import cv2
cap = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480))
while True:ret, frame = cap.read()if ret == True:out.write(frame)cv2.imshow('frame', frame)if cv2.waitKey(1) & 0xFF == ord('q'):break
cap.release()
out.release()
cv2.destroyAllWindows()
Python+Opencv图像处理新手入门教程(四):视频内容的读取与导出相关推荐
- Python+Opencv图像处理新手入门教程(三):阈值与二值化
一步一步来吧 上一节: Python+Opencv图像处理新手入门教程(二):颜色空间转换,图像大小调整,灰度直方图 1.Intro 今天这节我们主要研究利用阈值处理图像.例如对于输入图像: 如何做一 ...
- Python+Opencv图像处理新手入门教程(二):颜色空间转换,图像大小调整,灰度直方图
一步一步来吧 上一节:Python+Opencv图像处理新手入门教程(一):介绍,安装与起步 1.什么是图像 对于计算机而言,图像的本质是一个由像素点构成的矩阵. 例如我们用肉眼很容易分辨一辆汽车的后 ...
- Python+Opencv图像处理新手入门教程(一):介绍,安装与起步
一步一步来吧 1.什么是opencv opencv: 是一个开源的计算机视觉库,它提供了很多函数,这些函数非常高效地实现了计算机视觉算法(最基本的滤波到高级的物体检测皆有涵盖). 使用 C/C++ 开 ...
- Python+OpenCV 图像处理系列(2)—— 视频捕获、播放和保存
1.视频捕获 为了获取视频,首先需要创建一个 VideoCapture 类对象.它的参数可以是设备的索引号,或者是一个视频文件.设备索引号就是在指定要使用的摄像头.一般的笔记本电脑都有内置摄像头.所以 ...
- vs python opencv配置_OPENCV入门教程二:opencv+VS2015开发环境配置
在该cpp文件中输入一下代码 #include #include #include #include #include using namespace cv; using namespace std; ...
- 流媒体服务新手入门教程03--音视频基础
对于简单的接入摄像头等硬件或者推送视频流.录制文件,那么直接下载m7s官网编译好的二进制文件即可. 如果要做二次开发,那么就需要了一些基础的音视频基础,及m7s代码了,我们先了解一些音视频基础. 视频 ...
- python零基础入门教程视频下载-零基础学Python入门教程,视频资源下载
课程名称 零基础学Python入门教程,视频资源下载 课程目录 第一章 :Python介绍和安装 01.Python语言的特点 02.Python的发展历史与版本 03.Python的安装 第二章 : ...
- 想学python都要下载什么软件-学编程闲余时间建议下载的软件_Python新手入门教程...
原标题:学编程闲余时间建议下载的软件_Python新手入门教程 Python新手入门教程_在手机上就能学习编程的软件 很多小伙伴会问:我在学编程,想利用坐地铁坐公交吃饭间隙学编程,在手机上能学编程的软 ...
- 编程入门python语言是多大孩子学的-不学点编程,将来怎么给孩子辅导作业―Python新手入门教程...
为了填满AI时代的人才缺口,编程语言教育都从娃娃抓起了!如果你还不懂Python是什么将来怎么给孩子辅导作业呢? Python新手入门教程 近期,浙江省信息技术课程改革方案出台,Python言语现已断 ...
最新文章
- Linux:Swap分区
- python中的ord函数
- php mysql source_详解MySQL数据库中有关source命令
- Echarts实现隐藏x轴,y轴,刻度线,网格
- 用python计算ln函数_python-含参函数
- MATLAB的cat()函数
- 简化异常处理的Throwables类
- SoapUI接口测试之实战运用操作(五)
- android AudioManager类 详解(1)
- 下载verycd的方法下载电驴资源隐藏资源的最新可用方法
- 二叉树模型期权定价c语言程序,二叉树期权定价模型
- 计算机上无开根号功能 怎么计算机,中级会计师无纸化考试计算器怎么开根号?...
- 基于程序员职业对于婚配问题的研究——程序员为何单身?
- JQ彩色3D纸片折叠动画
- 美丽的余霞风景mac高清动态壁纸
- 【每日AI】什么是矢量字库?
- 离散模型——多属性决策
- vb wps 链接单元格_vb读取WPS的EXCEL文档并另存为其他
- 如果你没空学英语,推荐你关注这几个英语大神都在看的视频号!
- Skype for Business Server 2015-13-IISARR-2-发布-3-OWAS
热门文章
- python游戏服务器搭建教程_游戏服务端pomelo安装配置
- async spring 默认线程池_SpringBoot中Async异步方法和定时任务介绍
- 计算机二级地15套题答案,计算机二级第15套答案解析.docx
- mysql事务最好别用_理解完这些基本上能解决面试中MySql的事务问题
- 软件工程导论 06章详细设计
- Python邮件操作实例:发个邮件用Python实现远程自动关机
- 【机器学习-西瓜书】三、逻辑回归(LR);线性判别分析(LDA)
- [转]numpy 100道练习题
- Ubuntu backlight
- Altium AD20导出为PDF、导出BOM表