一步一步来吧

上一节:
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图像处理新手入门教程(四):视频内容的读取与导出相关推荐

  1. Python+Opencv图像处理新手入门教程(三):阈值与二值化

    一步一步来吧 上一节: Python+Opencv图像处理新手入门教程(二):颜色空间转换,图像大小调整,灰度直方图 1.Intro 今天这节我们主要研究利用阈值处理图像.例如对于输入图像: 如何做一 ...

  2. Python+Opencv图像处理新手入门教程(二):颜色空间转换,图像大小调整,灰度直方图

    一步一步来吧 上一节:Python+Opencv图像处理新手入门教程(一):介绍,安装与起步 1.什么是图像 对于计算机而言,图像的本质是一个由像素点构成的矩阵. 例如我们用肉眼很容易分辨一辆汽车的后 ...

  3. Python+Opencv图像处理新手入门教程(一):介绍,安装与起步

    一步一步来吧 1.什么是opencv opencv: 是一个开源的计算机视觉库,它提供了很多函数,这些函数非常高效地实现了计算机视觉算法(最基本的滤波到高级的物体检测皆有涵盖). 使用 C/C++ 开 ...

  4. Python+OpenCV 图像处理系列(2)—— 视频捕获、播放和保存

    1.视频捕获 为了获取视频,首先需要创建一个 VideoCapture 类对象.它的参数可以是设备的索引号,或者是一个视频文件.设备索引号就是在指定要使用的摄像头.一般的笔记本电脑都有内置摄像头.所以 ...

  5. vs python opencv配置_OPENCV入门教程二:opencv+VS2015开发环境配置

    在该cpp文件中输入一下代码 #include #include #include #include #include using namespace cv; using namespace std; ...

  6. 流媒体服务新手入门教程03--音视频基础

    对于简单的接入摄像头等硬件或者推送视频流.录制文件,那么直接下载m7s官网编译好的二进制文件即可. 如果要做二次开发,那么就需要了一些基础的音视频基础,及m7s代码了,我们先了解一些音视频基础. 视频 ...

  7. python零基础入门教程视频下载-零基础学Python入门教程,视频资源下载

    课程名称 零基础学Python入门教程,视频资源下载 课程目录 第一章 :Python介绍和安装 01.Python语言的特点 02.Python的发展历史与版本 03.Python的安装 第二章 : ...

  8. 想学python都要下载什么软件-学编程闲余时间建议下载的软件_Python新手入门教程...

    原标题:学编程闲余时间建议下载的软件_Python新手入门教程 Python新手入门教程_在手机上就能学习编程的软件 很多小伙伴会问:我在学编程,想利用坐地铁坐公交吃饭间隙学编程,在手机上能学编程的软 ...

  9. 编程入门python语言是多大孩子学的-不学点编程,将来怎么给孩子辅导作业―Python新手入门教程...

    为了填满AI时代的人才缺口,编程语言教育都从娃娃抓起了!如果你还不懂Python是什么将来怎么给孩子辅导作业呢? Python新手入门教程 近期,浙江省信息技术课程改革方案出台,Python言语现已断 ...

最新文章

  1. Linux:Swap分区
  2. python中的ord函数
  3. php mysql source_详解MySQL数据库中有关source命令
  4. Echarts实现隐藏x轴,y轴,刻度线,网格
  5. 用python计算ln函数_python-含参函数
  6. MATLAB的cat()函数
  7. 简化异常处理的Throwables类
  8. SoapUI接口测试之实战运用操作(五)
  9. android AudioManager类 详解(1)
  10. 下载verycd的方法下载电驴资源隐藏资源的最新可用方法
  11. 二叉树模型期权定价c语言程序,二叉树期权定价模型
  12. 计算机上无开根号功能 怎么计算机,中级会计师无纸化考试计算器怎么开根号?...
  13. 基于程序员职业对于婚配问题的研究——程序员为何单身?
  14. JQ彩色3D纸片折叠动画
  15. 美丽的余霞风景mac高清动态壁纸
  16. 【每日AI】什么是矢量字库?
  17. 离散模型——多属性决策
  18. vb wps 链接单元格_vb读取WPS的EXCEL文档并另存为其他
  19. 如果你没空学英语,推荐你关注这几个英语大神都在看的视频号!
  20. Skype for Business Server 2015-13-IISARR-2-发布-3-OWAS

热门文章

  1. python游戏服务器搭建教程_游戏服务端pomelo安装配置
  2. async spring 默认线程池_SpringBoot中Async异步方法和定时任务介绍
  3. 计算机二级地15套题答案,计算机二级第15套答案解析.docx
  4. mysql事务最好别用_理解完这些基本上能解决面试中MySql的事务问题
  5. 软件工程导论 06章详细设计
  6. Python邮件操作实例:发个邮件用Python实现远程自动关机
  7. 【机器学习-西瓜书】三、逻辑回归(LR);线性判别分析(LDA)
  8. [转]numpy 100道练习题
  9. Ubuntu backlight
  10. Altium AD20导出为PDF、导出BOM表