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中一些自然语言工具的使用的入门教程
Apr 13 Python
Python中getattr函数和hasattr函数作用详解
Jun 14 Python
浅谈Python中的可变对象和不可变对象
Jul 07 Python
Python读取sqlite数据库文件的方法分析
Aug 07 Python
Python字符串拼接六种方法介绍
Dec 18 Python
python绘制立方体的方法
Jul 02 Python
Python中__slots__属性介绍与基本使用方法
Sep 05 Python
python图片二值化提高识别率代码实例
Aug 24 Python
python 怎样将dataframe中的字符串日期转化为日期的方法
Sep 26 Python
Python 程序员必须掌握的日志记录
Aug 17 Python
Python用any()函数检查字符串中的字母以及如何使用all()函数
Apr 14 Python
pytest实现多进程与多线程运行超好用的插件
Jul 15 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
关于时间计算的结总
2006/12/06 PHP
php中将html中的br换行符转换为文本输入中的换行符
2013/03/26 PHP
解析PHP中empty is_null和isset的测试
2013/06/29 PHP
PHP APC配置文件2套和参数详解
2014/06/11 PHP
对PHP语言认识上需要避免的10大误区
2014/06/12 PHP
ThinkPHP独立分组使用的注意事项
2014/11/25 PHP
PHP实现的增强性mhash函数
2015/05/27 PHP
php检测文本的编码
2015/07/26 PHP
php脚本运行时的超时机制详解
2016/02/17 PHP
PHP身份证校验码计算方法
2016/08/10 PHP
遍历echsop的region表形成缓存的程序实例代码
2016/11/01 PHP
javascript中数组中求最大值示例代码
2013/12/18 Javascript
js判断是否为ie的方法小结
2014/01/13 Javascript
ECMAScript6的新特性箭头函数(Arrow Function)详细介绍
2014/06/07 Javascript
实现前后端数据交互方法汇总
2015/04/07 Javascript
js+css简单实现网页换肤效果
2015/12/29 Javascript
BootStrap Table 设置height表头与内容无法对齐的问题
2016/12/28 Javascript
Node 自动化部署的方法
2017/10/17 Javascript
Vue-cli3生成的Vue项目加载Mxgraph方法示例
2020/05/31 Javascript
[38:40]2018DOTA2亚洲邀请赛 4.6淘汰赛 mineski vs LGD 第一场
2018/04/10 DOTA
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
简单的连接MySQL与Python的Bottle框架的方法
2015/04/30 Python
Python编程中的异常处理教程
2015/08/21 Python
Python爬取附近餐馆信息代码示例
2017/12/09 Python
如何用python写一个简单的词法分析器
2018/12/18 Python
Python循环实现n的全排列功能
2019/09/16 Python
500行代码使用python写个微信小游戏飞机大战游戏
2019/10/16 Python
HTML5中Localstorage的使用教程
2015/07/09 HTML / CSS
HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码
2020/04/10 HTML / CSS
美国网上鞋子零售商:Dr. Scholl’s Shoes
2017/11/17 全球购物
Vilebrequin欧洲官网:法国豪华泳装品牌(男士沙滩裤)
2018/04/14 全球购物
英国领先的游戏零售商:GAME
2019/09/24 全球购物
学习走群众路线心得体会
2014/11/05 职场文书
简单的离婚协议书范本
2014/11/16 职场文书
2015年中学图书馆工作总结
2015/07/22 职场文书
openstack中的rpc远程调用的方法
2021/07/09 Python