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 web框架学习笔记
May 03 Python
python实现SMTP邮件发送功能
Jun 16 Python
Python ldap实现登录实例代码
Sep 30 Python
Python使用defaultdict读取文件各列的方法
May 11 Python
Python列表和元组的定义与使用操作示例
Jul 26 Python
Python实现抓取网页生成Excel文件的方法示例
Aug 05 Python
tensorflow实现对图片的读取的示例代码
Feb 12 Python
python 给DataFrame增加index行名和columns列名的实现方法
Jun 08 Python
浅谈Python采集网页时正则表达式匹配换行符的问题
Dec 20 Python
Python图像处理之图像的缩放、旋转与翻转实现方法示例
Jan 04 Python
python读取并定位excel数据坐标系详解
Jun 26 Python
keras 模型参数,模型保存,中间结果输出操作
Jul 06 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
linux实现php定时执行cron任务详解
2013/12/24 PHP
PHP小教程之实现双向链表
2014/06/12 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(六)
2014/06/23 PHP
[原创]PHP简单开启curl的方法(测试可行)
2016/01/11 PHP
php PDO异常处理详解
2016/11/20 PHP
浅谈php中变量的数据类型判断函数
2017/03/04 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
2017/04/01 PHP
js模拟select下拉菜单控件的代码
2013/05/08 Javascript
jquery模拟LCD 时钟的html文件源代码
2014/06/16 Javascript
jQuery中innerWidth()方法用法实例
2015/01/19 Javascript
用纯Node.JS弹出Windows系统消息提示框实例(MessageBox)
2017/05/17 Javascript
浅谈mint-ui loadmore组件注意的问题
2017/11/08 Javascript
node.js调用C++函数的方法示例
2018/09/21 Javascript
vue-cli项目中使用echarts图表实例
2018/10/22 Javascript
JavaScript实现刮刮乐效果
2020/11/01 Javascript
[44:15]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第二局
2016/03/06 DOTA
Python 返回汉字的汉语拼音
2009/02/27 Python
Python中使用 Selenium 实现网页截图实例
2014/07/18 Python
对Python的多进程锁的使用方法详解
2019/02/18 Python
浅析Django中关于session的使用
2019/12/30 Python
pycharm通过ssh连接远程服务器教程
2020/02/12 Python
Pyinstaller 打包发布经验总结
2020/06/02 Python
is_file和file_exists效率比较
2021/03/14 PHP
eDreams加拿大:廉价航班、酒店和度假
2019/03/29 全球购物
向全球直邮输送天然健康产品:iHerb.com
2020/05/03 全球购物
英语硕士生求职简历的自我评价
2013/10/15 职场文书
电子商务毕业生求职信
2013/11/10 职场文书
趣味体育活动方案
2014/02/08 职场文书
检查接待方案
2014/02/27 职场文书
财务部总监岗位职责
2014/03/12 职场文书
2014年党员创先争优承诺书
2014/05/29 职场文书
物理学专业自荐信
2014/06/11 职场文书
乡镇挂职心得体会
2014/09/04 职场文书
幼师辞职信怎么写
2015/02/27 职场文书
关于国庆节的广播稿
2015/08/19 职场文书
JavaScript实现优先级队列
2021/12/06 Javascript