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脚本和ADB命令实现卸载App
Feb 10 Python
PyCharm在win10的64位系统安装实例
Nov 26 Python
Python星号*与**用法分析
Feb 02 Python
异步任务队列Celery在Django中的使用方法
Jun 07 Python
python之super的使用小结
Aug 13 Python
python random从集合中随机选择元素的方法
Jan 23 Python
Python读取Pickle文件信息并计算与当前时间间隔的方法分析
Jan 30 Python
django 做 migrate 时 表已存在的处理方法
Aug 31 Python
Pytest mark使用实例及原理解析
Feb 22 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
Mar 03 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
Apr 03 Python
Python中可变和不可变对象的深入讲解
Aug 02 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
PHP.MVC的模板标签系统(二)
2006/09/05 PHP
PHP iconv 函数转gb2312的bug解决方法
2009/10/11 PHP
UCenter中的一个可逆加密函数authcode函数代码
2010/07/20 PHP
php实现的Timer页面运行时间监测类
2014/09/24 PHP
PHP中header函数的用法及其注意事项详解
2016/06/13 PHP
web 页面分页打印的实现
2009/06/22 Javascript
javascript eval(func())使用示例
2013/12/05 Javascript
javascript将浮点数转换成整数的三个方法
2014/06/23 Javascript
jquery实现表单输入时提示文字滑动向上效果
2015/08/10 Javascript
详解Vue.js动态绑定class
2016/12/20 Javascript
脚本div实现拖放功能(两种)
2017/02/13 Javascript
Vuejs仿网易云音乐实现听歌及搜索功能
2017/03/30 Javascript
JS实现验证码倒计时的注册页面
2018/01/02 Javascript
vue+iview+less+echarts实战项目总结
2018/02/22 Javascript
判断iOS、Android以及PC端的示例代码
2018/11/15 Javascript
详解如何写出一个利于扩展的vue路由配置
2019/05/16 Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
2019/11/18 Javascript
JS校验与最终登陆界面功能完整示例
2020/01/13 Javascript
python 远程统计文件代码分享
2015/05/14 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
Python根据服务获取端口号的方法
2019/09/25 Python
python能做哪些生活有趣的事情
2020/09/09 Python
python 检测图片是否有马赛克
2020/12/01 Python
比利时香水网上商店:NOTINO
2018/03/28 全球购物
法国购买隐形眼镜和眼镜网站:Optical Center
2019/10/08 全球购物
斯图尔特·韦茨曼鞋加拿大官网:Stuart Weitzman加拿大
2019/10/13 全球购物
医药个人求职信范文
2014/01/29 职场文书
小学教师培训感言
2014/02/11 职场文书
高中打架检讨书
2014/02/13 职场文书
今冬明春火灾防控工作方案
2014/05/29 职场文书
县委党的群众路线教育实践活动工作情况报告
2014/10/25 职场文书
2014年个人工作总结报告
2014/11/27 职场文书
2015年纪检监察工作总结
2015/04/08 职场文书
机关保密工作承诺书
2015/05/04 职场文书
Python Pycharm虚拟下百度飞浆PaddleX安装报错问题及处理方法(亲测100%有效)
2021/05/24 Python
JS实现数组去重的11种方法总结
2022/04/04 Javascript