Python imageio读取视频并进行编解码详解


Posted in Python onDecember 10, 2019

读视频和写视频一直由于编解码的问题给程序员造成很多麻烦。对此进行了一些探索。用Python读取视频有两种主要方法,分别是基于imageio库和OpenCV,其中OpenCV加上ffmpeg的安装编译很麻烦,推荐大家使用第一种方法,不过大家也可依据自己的需求进行使用。

方法一:使用imageio库

1. 一般imageio库Anconda自带的有,不用我们单独安装,没有安装的可用pip安装或自己下载。

imageio使用方法可参考:http://imageio.readthedocs.io/en/latest/examples.html。

下面是一段使用imageio对视频进行灰度处理的测试代码。

# 将彩色视频转为灰度视频
import imageio
 
reader = imageio.get_reader('imageio:cockatoo.mp4')
fps = reader.get_meta_data()['fps']
 
writer = imageio.get_writer('~/cockatoo_gray.mp4', fps=fps)
 
for im in reader:
 writer.append_data(im[:, :, 1])
writer.close()

2.一般你没有按照ffmpeg,直接运行会提示如下所示的要安装ffmpeg,使用conda安装即可。另一个编解码器包含比较全的编译包是https://www.johnvansickle.com/ffmpeg/

imageio.core.fetching.NeedDownloadError: Need ffmpeg exe. You can obtain it with either:
 - install using conda: conda install ffmpeg -c conda-forge
 - download by calling: imageio.plugins.ffmpeg.download()

所以按照提示运行如下命令安装conda-forge编译好的ffmpeg即可,conda-forge编译的ffmpeg视频编解码库都很齐全,可以直接对视频读存取。

conda install ffmpeg -c conda-forge

PS:小技巧,如果conda安装国外软件包速度很慢的话,可以给conda添加清华大学的镜像源,依次运行下面几条命令就可以了,安装速度一般几M/s.具体可参考https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --set show_channel_urls yes

方法二:使用OpenCV和ffmpeg

安装较复杂,需编译很多库,自己查找参考相关方法。

下面是使用OpenCV读取视频的方法:

import cv2 
 
cap = cv2.VideoCapture('/path/to/your/video.mp4') 
 
while(cap.isOpened()): 
 ret, frame = cap.read() 
 cv2.imshow('image', frame) 
 k = cv2.waitKey(20) 
 #q键退出
 if (k & 0xff == ord('q')): 
  break 
 
cap.release() 
cv2.destroyAllWindows()

以上这篇Python imageio读取视频并进行编解码详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
举例讲解Python设计模式编程中对抽象工厂模式的运用
Mar 02 Python
Python基础中所出现的异常报错总结
Nov 19 Python
详解使用pymysql在python中对mysql的增删改查操作(综合)
Jan 18 Python
Python实现网站注册验证码生成类
Jun 08 Python
Python爬虫实现百度图片自动下载
Feb 04 Python
Python cookbook(数据结构与算法)实现查找两个字典相同点的方法
Feb 18 Python
python中的for循环
Sep 28 Python
python读取txt文件并取其某一列数据的示例
Feb 19 Python
python函数与方法的区别总结
Jun 23 Python
python脚本执行CMD命令并返回结果的例子
Aug 14 Python
Kears+Opencv实现简单人脸识别
Aug 28 Python
python利用platform模块获取系统信息
Oct 09 Python
Python中Subprocess的不同函数解析
Dec 10 #Python
使用python-opencv读取视频,计算视频总帧数及FPS的实现
Dec 10 #Python
python 视频逐帧保存为图片的完整实例
Dec 10 #Python
python 实现视频 图像帧提取
Dec 10 #Python
python-视频分帧&多帧合成视频实例
Dec 10 #Python
python实现视频读取和转化图片
Dec 10 #Python
sklearn-SVC实现与类参数详解
Dec 10 #Python
You might like
个人站长制做网页常用的php代码
2007/03/03 PHP
php 验证码实例代码
2010/06/01 PHP
PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)
2012/05/07 PHP
体育彩票排列三组选三算法分享
2014/03/07 PHP
PHP根据两点间的经纬度计算距离
2014/10/31 PHP
php生成excel列名超过26列大于Z时的解决方法
2014/12/29 PHP
10个超级有用值得收藏的PHP代码片段
2015/01/22 PHP
PHP实现截取中文字符串不出现?号的解决方法
2016/12/29 PHP
PHP判断json格式是否正确的实现代码
2017/09/20 PHP
js cookies实现简单统计访问次数
2009/11/24 Javascript
Jquery Autocomplete 结合asp.net使用要点
2010/10/29 Javascript
Jquery.LazyLoad.js修正版下载,实现图片延迟加载插件
2011/03/12 Javascript
JavaScript中访问节点对象的方法有哪些如何使用
2013/09/24 Javascript
jquery列表拖动排列(由项目提取相当好用)
2014/06/17 Javascript
JQuery表格拖动调整列宽效果(自己动手写的)
2014/09/01 Javascript
jQuery+AJAX实现网页无刷新上传
2015/02/22 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
2015/03/03 Javascript
详解JavaScript中的every()方法
2015/06/08 Javascript
原生JS实现首页进度加载动画
2016/09/14 Javascript
JS实现自动轮播图效果(自适应屏幕宽度+手机触屏滑动)
2017/06/19 Javascript
解决Vue.js父组件$on无法监听子组件$emit触发事件的问题
2018/09/12 Javascript
webpack HappyPack实战详解
2019/10/08 Javascript
这15个Vue指令,让你的项目开发爽到爆
2019/10/11 Javascript
JS错误处理与调试操作实例分析
2020/04/13 Javascript
树莓派动作捕捉抓拍存储图像脚本
2019/06/22 Python
使用HTML5 Geolocation实现一个距离追踪器
2018/04/09 HTML / CSS
印尼穆斯林时尚购物网站:Hijabenka
2016/12/10 全球购物
俄罗斯小米家用电器、电子产品和智能家居商店:Poood.ru
2020/04/03 全球购物
叙述DBMS对数据控制功能有哪些
2016/06/12 面试题
大学生最新职业生涯规划书范文
2014/01/12 职场文书
教育科研先进个人材料
2014/01/26 职场文书
爱国卫生月实施方案
2014/02/21 职场文书
营销部内勤岗位职责
2014/04/30 职场文书
党员群众路线承诺书
2014/05/20 职场文书
法人代表资格证明书
2015/06/18 职场文书
2015年教师节感言
2015/08/03 职场文书