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编程之微信推送模板消息功能示例
Aug 21 Python
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
Jan 10 Python
Python内存读写操作示例
Jul 18 Python
Python GUI布局尺寸适配方法
Oct 11 Python
Python3 利用requests 库进行post携带账号密码请求数据的方法
Oct 26 Python
Python使用指定端口进行http请求的例子
Jul 25 Python
python导入不同目录下的自定义模块过程解析
Nov 18 Python
Python 类的魔法属性用法实例分析
Nov 21 Python
python处理RSTP视频流过程解析
Jan 11 Python
pytorch方法测试——激活函数(ReLU)详解
Jan 15 Python
Python configparser模块常用方法解析
May 22 Python
jupyter notebook远程访问不了的问题解决方法
Jan 11 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
vBulletin Forum 2.3.xx SQL Injection
2006/10/09 PHP
?算你??的 PHP 程式大小
2006/12/06 PHP
PHP字符串处理的10个简单方法
2010/06/30 PHP
Laravel框架数据库迁移操作实例详解
2020/04/06 PHP
phpcmsv9.0任意文件上传漏洞解析
2020/10/20 PHP
extjs 列表框(multiselect)的动态添加列表项的方法
2009/07/31 Javascript
JS的replace方法介绍
2012/10/20 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
2014/05/26 Javascript
HTML,CSS,JavaScript速查表推荐
2014/12/02 Javascript
jQuery过滤选择器用法分析
2015/02/10 Javascript
javascript的BOM汇总
2015/07/16 Javascript
javascript自定义in_array()函数实现方法
2015/08/03 Javascript
关于JS Lodop打印插件打印Bootstrap样式错乱问题的解决方案
2016/12/23 Javascript
纯JS单页面赛车游戏制作代码分享
2017/03/03 Javascript
js学习总结_基于数据类型检测的四种方式(必看)
2017/07/04 Javascript
javascript按钮禁用和启用的效果实例代码
2017/10/29 Javascript
vue2.0 datepicker使用方法
2018/02/04 Javascript
关于JavaScript 数组你应该知道的事情(推荐)
2019/04/10 Javascript
微信小程序上传文件到阿里OSS教程
2019/05/20 Javascript
Vue 3.0 前瞻Vue Function API新特性体验
2019/08/12 Javascript
微信小程序实现签到弹窗动画
2020/09/21 Javascript
[05:09]2016国际邀请赛中国区预选赛淘汰赛首日精彩回顾
2016/06/29 DOTA
Python 3.x基于Xml数据的Http请求方法
2018/12/28 Python
python导入模块交叉引用的方法
2019/01/19 Python
利用Python实现Shp格式向GeoJSON的转换方法
2019/07/09 Python
Django项目后台不挂断运行的方法
2019/08/31 Python
树莓派安装OpenCV3完整过程的实现
2019/10/10 Python
Django实现将views.py中的数据传递到前端html页面,并展示
2020/03/16 Python
解决Keras自带数据集与预训练model下载太慢问题
2020/06/12 Python
解决PyCharm不在run输出运行结果而不是再Console里输出的问题
2020/09/21 Python
英国受欢迎的运动鞋和街头服装商店:Footasylum
2018/06/12 全球购物
Nisbets法国:英国最大的厨房和餐饮设备供应商
2019/03/18 全球购物
师范毕业生自荐信
2013/10/17 职场文书
企业消防安全责任书
2014/07/23 职场文书
政协会议宣传标语
2014/10/09 职场文书
为什么你写的height:100%不起作用
2021/05/10 HTML / CSS