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项目发布为exe可执行程序过程分享
Oct 23 Python
Python中第三方库Requests库的高级用法详解
Mar 12 Python
padas 生成excel 增加sheet表的实例
Dec 11 Python
python读取txt文件并取其某一列数据的示例
Feb 19 Python
python re库的正则表达式入门学习教程
Mar 08 Python
python 获取等间隔的数组实例
Jul 04 Python
python将字符串转变成dict格式的实现
Nov 18 Python
Python绘制二维曲线的日常应用详解
Dec 04 Python
使用python 计算百分位数实现数据分箱代码
Mar 03 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
Apr 27 Python
Python3 webservice接口测试代码详解
Jun 23 Python
Python实现淘宝秒杀功能的示例代码
Jan 19 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采用session实现防止页面重复刷新
2015/12/24 PHP
PHP简单实现文本计数器的方法
2016/04/28 PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
2016/07/23 PHP
thinkphp实现分页显示功能
2016/12/03 PHP
JavaScript中的私有成员
2006/09/18 Javascript
基于jQuery的投票系统显示结果插件
2011/08/12 Javascript
利用javascript解决图片缩放及其优化的代码
2012/05/23 Javascript
JS验证邮箱格式是否正确的代码
2013/12/05 Javascript
jquery实现通用版鼠标经过淡入淡出效果
2014/06/15 Javascript
jQuery中:only-child选择器用法实例
2015/01/03 Javascript
JavaScript内存管理介绍
2015/03/13 Javascript
jQuery easyUI datagrid 增加求和统计行的实现代码
2016/06/01 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐)
2016/06/23 Javascript
canvas学习之API整理笔记(一)
2016/12/29 Javascript
jQuery实现鼠标滑过预览图片大图效果的方法
2017/04/26 jQuery
Vue的H5页面唤起支付宝支付功能
2019/04/18 Javascript
5分钟快速看懂ES6中的反射与代理
2019/12/19 Javascript
JS数据类型判断的几种常用方法
2020/07/07 Javascript
基于JQuery和DWR实现异步数据传递
2020/10/16 jQuery
antd中table展开行默认展示,且不需要前边的加号操作
2020/11/02 Javascript
[01:20:47]DOTA2-DPC中国联赛 正赛 Ehome vs Magma BO3 第一场 1月19日
2021/03/11 DOTA
python和shell变量互相传递的几种方法
2013/11/20 Python
Python内置函数的用法实例教程
2014/09/08 Python
Python中的变量和作用域详解
2016/07/13 Python
python不换行之end=与逗号的意思及用途
2017/11/21 Python
Python tkinter实现的图片移动碰撞动画效果【附源码下载】
2018/01/04 Python
python 非线性规划方式(scipy.optimize.minimize)
2020/02/11 Python
Python Tricks 使用 pywinrm 远程控制 Windows 主机的方法
2020/07/21 Python
Python如何急速下载第三方库详解
2020/11/02 Python
CSS实现鼠标滑过鼠标点击代码写法
2016/12/26 HTML / CSS
Html5 语法与规则简要概述
2014/07/29 HTML / CSS
HTML5 Canvas之测试浏览器是否支持Canvas的方法
2015/01/01 HTML / CSS
检察官就职演讲稿
2014/01/13 职场文书
大学班级干部的自我评价分享
2014/02/10 职场文书
文艺演出策划方案
2014/06/07 职场文书
2021年国漫热度排行前十,完美世界上榜,第四是美国动画作品
2022/03/18 国漫