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实现在控制台输入密码不显示的方法
Jul 02 Python
Python制作简单的网页爬虫
Nov 22 Python
使用django-crontab实现定时任务的示例
Feb 26 Python
python 3利用Dlib 19.7实现摄像头人脸检测特征点标定
Feb 26 Python
使用pandas对两个dataframe进行join的实例
Jun 08 Python
浅析Python pandas模块输出每行中间省略号问题
Jul 03 Python
使用python将图片格式转换为ico格式的示例
Oct 22 Python
QML使用Python的函数过程解析
Sep 26 Python
pytorch 归一化与反归一化实例
Dec 31 Python
pygame用blit()实现动画效果的示例代码
May 28 Python
PIP和conda 更换国内安装源的方法步骤
Sep 21 Python
python中scrapy处理项目数据的实例分析
Nov 22 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下 C语言对 php 扩展
2008/12/14 PHP
yii2 页面底部加载css和js的技巧
2016/04/21 PHP
深入认识javascript中的eval函数
2009/11/02 Javascript
DIV+CSS+JS不间断横向滚动实现代码
2013/03/19 Javascript
JavaScript中的prototype和constructor简明总结
2014/04/05 Javascript
原生javascript获取元素样式
2014/12/31 Javascript
JS实现随页面滚动显示/隐藏窗口固定位置元素
2016/02/26 Javascript
jQuery多级联动下拉插件chained用法示例
2016/08/20 Javascript
利用jquery实现瀑布流3种案例
2016/09/18 Javascript
js中常用的Math方法总结
2017/01/12 Javascript
javascript ES6 新增了let命令使用介绍
2017/07/07 Javascript
强大的JavaScript响应式图表Chartist.js的使用
2017/09/13 Javascript
vue watch自动检测数据变化实时渲染的方法
2018/01/16 Javascript
Express本地测试HTTPS的示例代码
2018/06/06 Javascript
Vue.js 利用v-for中的index值实现隔行变色
2018/08/01 Javascript
使用Angular-CLI构建NPM包的方法
2018/09/07 Javascript
Vue.set()动态的新增与修改数据,触发视图更新的方法
2018/09/15 Javascript
python通过pil将图片转换成黑白效果的方法
2015/03/16 Python
Python每天必学之bytes字节
2016/01/28 Python
Python随机数用法实例详解【基于random模块】
2017/04/18 Python
python利用正则表达式排除集合中字符的功能示例
2017/10/10 Python
Python 通配符删除文件的实例
2018/04/24 Python
Python continue继续循环用法总结
2018/06/10 Python
Python列表生成式与生成器操作示例
2018/08/01 Python
Python3如何使用tabulate打印数据
2020/09/25 Python
BeautifulSoup获取指定class样式的div的实现
2020/12/07 Python
草莓网化妆品加拿大网站:Strawberrynet Canada
2016/09/20 全球购物
Lookfantastic台湾:英国彩妆美发保养购物网
2018/03/26 全球购物
SCHIESSER荷兰官方网站:德国内衣专家
2020/10/09 全球购物
校园达人秀策划书
2014/01/12 职场文书
党员承诺践诺书
2014/05/20 职场文书
经典格言警句:没有热忱,世间便无进步
2019/11/13 职场文书
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
2021/04/05 MySQL
JavaWeb Servlet实现网页登录功能
2021/07/04 Java/Android
VS2019连接MySQL数据库的过程及常见问题总结
2021/11/27 MySQL
详解nginx安装过程并代理下载服务器文件
2022/02/12 Servers