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使用Image处理图片常用技巧分析
Jun 01 Python
python 2.7.14安装图文教程
Apr 08 Python
Php多进程实现代码
May 07 Python
Python生成器generator用法示例
Aug 10 Python
详解Python3之数据指纹MD5校验与对比
Jun 11 Python
Python OpenCV中的resize()函数的使用
Jun 20 Python
一篇文章弄懂Python中的可迭代对象、迭代器和生成器
Aug 12 Python
Python 利用高德地图api实现经纬度与地址的批量转换
Aug 14 Python
python 正则表达式贪婪模式与非贪婪模式原理、用法实例分析
Oct 14 Python
Python时间差中seconds和total_seconds的区别详解
Dec 26 Python
python中如何打包用户自定义模块
Sep 23 Python
Python基础之元类详解
Apr 29 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
日本收入最高的漫画家:海贼王作者版税年收入高达8.45亿元
2020/03/04 日漫
PHP+JS实现大规模数据提交的方法
2015/07/02 PHP
浅谈php://filter的妙用
2019/03/05 PHP
PHP实现的pdo连接数据库并插入数据功能简单示例
2019/03/30 PHP
php扩展开发入门demo示例
2019/09/23 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
Yii框架应用组件用法实例分析
2020/05/15 PHP
javascript写的日历类(基于pj)
2010/12/28 Javascript
js自定义事件代码说明
2011/01/31 Javascript
基于jQuery代码实现圆形菜单展开收缩效果
2017/02/13 Javascript
Extjs表单输入框异步校验的插件实现方法
2017/03/20 Javascript
jquery加载单文件vue组件的方法
2017/06/20 jQuery
详解vuejs之v-for列表渲染
2017/06/22 Javascript
微信禁止下拉查看URL的处理方法
2017/09/28 Javascript
详解Node.js模板引擎Jade入门
2018/01/19 Javascript
Angular6 发送手机验证码按钮倒计时效果实现方法
2019/01/08 Javascript
详解微信小程序之scroll-view的flex布局问题
2019/01/16 Javascript
Javascript删除数组里的某个元素
2019/02/28 Javascript
vue实现导航菜单和编辑文本的示例代码
2020/07/04 Javascript
Antd的Table组件嵌套Table以及选择框联动操作
2020/10/24 Javascript
jQuery实现简单弹幕制作
2020/12/10 jQuery
[43:41]OG vs Newbee 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
python中string模块各属性以及函数的用法介绍
2016/05/30 Python
机器学习10大经典算法详解
2017/12/07 Python
python tkinter库实现气泡屏保和锁屏
2019/07/29 Python
python 画函数曲线示例
2019/12/04 Python
Python命名空间namespace及作用域原理解析
2020/06/05 Python
python3.5的包存放的具体路径
2020/08/16 Python
Python中免验证跳转到内容页的实例代码
2020/10/23 Python
关于django python manage.py startapp 应用名出错异常原因解析
2020/12/15 Python
HOTEL INFO英国:搜索全球酒店
2019/08/08 全球购物
党员公开承诺书内容
2014/05/20 职场文书
企业介绍信范文
2015/01/30 职场文书
2015羊年春节慰问信
2015/02/14 职场文书
乔布斯辞职信(中英文对照)
2015/05/12 职场文书
Github 使用python对copilot做些简单使用测试
2022/04/14 Python