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算法学习之基数排序实例
Dec 18 Python
Python使用reportlab将目录下所有的文本文件打印成pdf的方法
May 20 Python
python 实时遍历日志文件
Apr 12 Python
Python简单格式化时间的方法【strftime函数】
Sep 18 Python
解决python3读取Python2存储的pickle文件问题
Oct 25 Python
Python实现的在特定目录下导入模块功能分析
Feb 11 Python
Python使用MyQR制作专属动态彩色二维码功能
Jun 04 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
Jun 28 Python
使用python 对验证码图片进行降噪处理
Dec 18 Python
Django使用Celery加redis执行异步任务的实例内容
Feb 20 Python
Python基于pandas爬取网页表格数据
May 11 Python
python实现高效的遗传算法
Apr 07 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
中国站长站 For Dede4.0 采集规则
2007/05/27 PHP
phpinfo() 中 Local Value(局部变量)Master Value(主变量) 的区别
2016/02/03 PHP
Laravel中Trait的用法实例详解
2016/03/16 PHP
PHP面向对象五大原则之依赖倒置原则(DIP)详解
2018/04/08 PHP
linux mint下安装phpstorm2020包括JDK部分的教程详解
2020/09/17 PHP
Javascript学习笔记5 类和对象
2010/01/11 Javascript
JavaScript学习笔记(十)
2010/01/17 Javascript
鼠标滑上去后图片放大浮出效果的js代码
2011/05/28 Javascript
JavaScript判断数组是否存在key的简单实例
2016/08/03 Javascript
Javascript 实现全屏滚动实例代码
2016/12/31 Javascript
深入理解JavaScript和TypeScript中的class
2018/04/22 Javascript
vue 实现在函数中触发路由跳转的示例
2018/09/01 Javascript
elementUI select组件value值注意事项详解
2019/05/29 Javascript
微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能
2019/12/06 Javascript
Python入门篇之对象类型
2014/10/17 Python
用Python抢过年的火车票附源码
2015/12/07 Python
python的构建工具setup.py的方法使用示例
2017/10/23 Python
Python 比较文本相似性的方法(difflib,Levenshtein)
2018/10/15 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
2019/01/22 Python
python os.path.isfile()因参数问题判断错误的解决
2019/11/29 Python
Python: 传递列表副本方式
2019/12/19 Python
DAWGS鞋官方网站:鞋,凉鞋,靴子
2016/10/04 全球购物
Strawberrynet草莓网新加坡站:护肤、彩妆、香水及美发产品
2018/08/31 全球购物
为什么UNION ALL比UNION快
2016/03/17 面试题
企业年会主持词
2014/03/27 职场文书
企业文化口号
2014/06/12 职场文书
2014年教师节寄语
2014/08/11 职场文书
房产销售独家委托书范本
2014/10/01 职场文书
民间借贷协议书范本
2014/10/01 职场文书
2014年学生工作总结
2014/11/20 职场文书
2015年学校安全工作总结
2015/04/22 职场文书
2015年学校政教工作总结
2015/07/20 职场文书
2015年社区重阳节活动总结
2015/07/30 职场文书
详解Python魔法方法之描述符类
2021/05/26 Python
死磕 java同步系列之synchronized解析
2021/06/28 Java/Android
Vue Element-ui表单校验规则实现
2021/07/09 Vue.js