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 布尔操作实现代码
Mar 23 Python
Python遍历文件夹和读写文件的实现代码
Aug 28 Python
用Pygal绘制直方图代码示例
Dec 07 Python
Python内置模块logging用法实例分析
Feb 12 Python
python中退出多层循环的方法
Nov 27 Python
浅析python参数的知识点
Dec 10 Python
Python3爬楼梯算法示例
Mar 04 Python
解决python脚本中error: unrecognized arguments: True错误
Apr 20 Python
使用keras实现densenet和Xception的模型融合
May 23 Python
Python小白学习爬虫常用请求报头
Jun 03 Python
解决python3输入的坑——input()
Dec 05 Python
OpenCV+python实现膨胀和腐蚀的示例
Dec 21 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
windows下PHP APACHE MYSQ完整配置
2007/01/02 PHP
php读取数据库信息的几种方法
2008/05/24 PHP
关于js和php对url编码的处理方法
2014/03/04 PHP
支付宝服务窗API接口开发php版本
2016/07/20 PHP
php array_walk 对数组中的每个元素应用用户自定义函数详解
2016/11/18 PHP
Mootools 1.2教程 滚动条(Slider)
2009/09/15 Javascript
jQuery 前的按键判断代码
2010/03/19 Javascript
Array栈方法和队列方法的特点说明
2014/01/24 Javascript
JavaScript异步加载浅析
2014/12/28 Javascript
基于jQuery实现动态搜索显示功能
2016/05/05 Javascript
js事件冒泡、事件捕获和阻止默认事件详解
2016/08/04 Javascript
javascript实现鼠标点击页面 移动DIV
2016/12/02 Javascript
vue移动端裁剪图片结合插件Cropper的使用实例代码
2017/07/10 Javascript
浅谈es6语法 (Proxy和Reflect的对比)
2017/10/24 Javascript
Vue2.0 事件的广播与接收(观察者模式)
2018/03/14 Javascript
Vue实现回到顶部和底部动画效果
2019/07/31 Javascript
vue实现购物车小案例
2019/09/27 Javascript
JavaScript 接口原理与用法实例详解
2020/05/12 Javascript
[01:28:31]《加油DOTA》真人秀 第五期
2014/09/01 DOTA
Python实现登录人人网并抓取新鲜事的方法
2015/05/11 Python
Python使用tablib生成excel文件的简单实现方法
2016/03/16 Python
Python脚本实现自动发带图的微博
2016/04/27 Python
图文讲解选择排序算法的原理及在Python中的实现
2016/05/04 Python
python实现列表中由数值查到索引的方法
2018/06/27 Python
对Python实现累加函数的方法详解
2019/01/23 Python
详解Python匿名函数(lambda函数)
2019/04/19 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
keras 获取某层输出 获取复用层的多次输出实例
2020/05/23 Python
python获取时间戳的实现示例(10位和13位)
2020/09/23 Python
美国大型的健身社区和补充商店:Bodybuilding.com
2016/09/06 全球购物
澳大利亚珠宝商:Shiels
2019/10/06 全球购物
简单的辞职信范文
2014/01/18 职场文书
土建专业大学生自荐信范文
2014/04/09 职场文书
安全责任书怎么写
2014/07/28 职场文书
SpringBoot项目中控制台日志的保存配置操作
2021/06/18 Java/Android
浅谈MySQL之select优化方案
2021/08/07 MySQL