python读取和保存视频文件


Posted in Python onApril 16, 2018

为了获取视频,应该创建一个 VideoCapture 对象。他的参数可以是设备的索引号,或者是一个视频文件。设备索引号就是在指定要使用的摄像头。

一般的笔记本电脑都有内置摄像头。所以参数就是 0。你可以通过设置成 1 或者其他的来选择别的摄像头。之后,你就可以一帧一帧的捕获视频了。但是最后,别忘了停止捕获视频。

import numpy as np 
import cv2 
cap=cv2.VideoCapture(0) 
while (True): 
  ret,frame=cap.read() 
  gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) 
  cv2.imshow("shiyan",gray) 
  if cv2.waitKey(1)&0xFF==ord('q'): 
    break 
cap.release() 
cv2.destroyAllWindows()

与c++很类似

cap.read() 返回一个布尔值(True/False)。如果帧读取的是正确的,就是 True。

所以最后你可以通过检查他的返回值来查看视频文件是否已经到了结尾。
有时 cap 可能不能成功的初始化摄像头设备。这种情况下上面的代码会报错。你可以使用 cap.isOpened(),来检查是否成功初始化了。如果返回值是True,那就没有问题。否则就要使用函数 cap.open()。

 你可以使用函数 cap.get(propId) 来获得视频的一些参数信息。这里propId 可以是 0 到 18 之间的任何整数。每一个数代表视频的一个属性其中的一些值可以使用 cap.set(propId,value) 来修改, value 就是你想要设置成的新值。例如,我可以使用 cap.get(3) 和 cap.get(4) 来查看每一帧的宽和高。默认情况下得到的值是 640X480。但是我可以使用 ret=cap.set(3,320)和 ret=cap.set(4,240) 来把宽和高改成 320X240。

2、保存视频

在我们捕获视频,并对每一帧都进行加工之后我们想要保存这个视频。对于图片来时很简单只需要使用 cv2.imwrite()。但对于视频来说就要多做点工作。

   这次我们要创建一个 VideoWriter 的对象。我们应该确定一个输出文件的名字。接下来指定 FourCC 编码。播放频率和帧的大小也都需要确定。最后一个是 isColor 标签。如果是 True,每一帧就是彩色图,否则就是灰度图。FourCC 就是一个 4 字节码,用来确定视频的编码格式。可用的编码列表可以从fourcc.org查到。这是平台依赖的。下面这些编码器对我来说是有用个。

• In Fedora: DIVX, XVID, MJPG, X264, WMV1, WMV2. (XVID is
more preferable. MJPG results in high size video. X264 gives
very small size video)
• In Windows: DIVX (More to be tested and added)
• In OSX : (I don't have access to OSX. Can some one fill this?)

FourCC 码以下面的格式传给程序,以 MJPG 为例:

cv2.cv.FOURCC('M','J','P','G') 或者 cv2.cv.FOURCC(*'MJPG')。

下面的代码是从摄像头中捕获视频,沿水平方向旋转每一帧并保存它。

import numpy as np 
import cv2 
cap = cv2.VideoCapture(0) 
# Define the codec and create VideoWriter object 
fourcc = cv2.cv.FOURCC(*'XVID') 
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480)) 
while (cap.isOpened()): 
 ret,frame=cap.read() 
 if ret==True: 
  frame=cv2.flip(frame,0) 
  out.write(frame) 
  cv2.imshow("实验",frame) 
  if cv2.waitKey(0)&0xFF==ord('q'): 
   break 
 else: 
  break 
cap.release() 
out.release() 
cv2.destroyAllWindows()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python访问纯真IP数据库的代码
May 19 Python
Python画图学习入门教程
Jul 01 Python
浅谈scrapy 的基本命令介绍
Jun 13 Python
Python中的并发处理之asyncio包使用的详解
Apr 03 Python
python删除本地夹里重复文件的方法
Nov 19 Python
编写多线程Python服务器 最适合基础
Sep 14 Python
django框架F&Q 聚合与分组操作示例
Dec 12 Python
Python unittest工作原理和使用过程解析
Feb 24 Python
Python post请求实现代码实例
Feb 28 Python
Django限制API访问频率常用方法解析
Oct 12 Python
Python字典实现伪切片功能
Oct 28 Python
使用PyCharm官方中文语言包汉化PyCharm
Nov 18 Python
Python读取视频的两种方法(imageio和cv2)
Apr 15 #Python
python2.7实现FTP文件下载功能
Apr 15 #Python
python实现多线程网页下载器
Apr 15 #Python
Python实现定时精度可调节的定时器
Apr 15 #Python
Python编写一个优美的下载器
Apr 15 #Python
python实现音乐下载器
Apr 15 #Python
tensorflow 1.0用CNN进行图像分类
Apr 15 #Python
You might like
给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug
2007/04/12 PHP
8个出色的WordPress SEO插件收集
2011/02/26 PHP
PHP实现二维数组按某列进行排序的方法
2016/11/18 PHP
php+ajax实现文件切割上传功能示例
2020/03/03 PHP
基于jquery的使ListNav兼容中文首字拼音排序的实现代码
2011/07/10 Javascript
javascript权威指南 学习笔记之变量作用域分享
2011/09/28 Javascript
纯js简单日历实现代码
2013/10/05 Javascript
JS短路原理的应用示例 精简代码的途径
2013/12/13 Javascript
javascript中的取反再取反~~没有意义
2014/04/06 Javascript
javascript关于运动的各种问题经典总结
2015/04/27 Javascript
Bootstrap被封装的弹层
2016/07/20 Javascript
jQuery的Read()方法代替原生JS详解
2016/11/08 Javascript
jQuery实现div跟随鼠标移动
2020/08/20 jQuery
JS+HTML5 FileReader实现文件上传前本地预览功能
2020/03/27 Javascript
vue params、query传参使用详解
2017/09/12 Javascript
11行JS代码制作二维码生成功能
2018/03/09 Javascript
Vue中的混入的使用(vue mixins)
2018/06/01 Javascript
在小程序中使用腾讯视频插件播放教程视频的方法
2018/07/10 Javascript
vue  自定义组件实现通讯录功能
2018/09/30 Javascript
es6基础学习之解构赋值
2018/12/10 Javascript
使用vscode快速建立vue模板过程详解
2019/10/10 Javascript
使用p5.js临摹动态图片
2019/11/04 Javascript
[01:29]2014DOTA2展望TI 剑指西雅图DK战队专访
2014/06/30 DOTA
[39:19]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第二场 11.26
2020/11/30 DOTA
在Django中同时使用多个配置文件的方法
2015/07/22 Python
使用Python创建简单的HTTP服务器的方法步骤
2019/04/26 Python
利用python计算windows全盘文件md5值的脚本
2019/07/27 Python
使用Tkinter制作信息提示框
2020/02/18 Python
详解python中GPU版本的opencv常用方法介绍
2020/07/24 Python
Python pickle模块常用方法代码实例
2020/10/10 Python
地图可视化神器kepler.gl python接口的使用方法
2020/12/22 Python
高一生物教学反思
2014/01/17 职场文书
安全教育实施方案
2014/03/02 职场文书
2014年六五普法工作总结
2014/11/25 职场文书
2015年度物流工作总结
2015/04/30 职场文书
Element实现动态表格的示例代码
2021/08/02 Javascript