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中用keys()方法返回字典键的教程
May 21 Python
python机器学习理论与实战(二)决策树
Jan 19 Python
Window 64位下python3.6.2环境搭建图文教程
Sep 19 Python
对python Tkinter Text的用法详解
Oct 11 Python
python批量下载抖音视频
Jun 17 Python
Python跳出多重循环的方法示例
Jul 03 Python
解决Python正则表达式匹配反斜杠''\''问题
Jul 17 Python
将matplotlib绘图嵌入pyqt的方法示例
Jan 08 Python
如何使用Python破解ZIP或RAR压缩文件密码
Jan 09 Python
tensorflow实现将ckpt转pb文件的方法
Apr 22 Python
基于PyTorch的permute和reshape/view的区别介绍
Jun 18 Python
Python jiaba库的使用详解
Nov 23 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中通过正则表达式下载内容中的远程图片的函数代码
2012/01/10 PHP
php实现文件下载代码分享
2014/08/19 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
2016/04/25 PHP
php redis实现文章发布系统(用户投票系统)
2017/03/04 PHP
js,jQuery 排序的实现代码,网页标签排序的实现,标签排序
2011/04/27 Javascript
JS 获取select(多选下拉)中所选值的示例代码
2013/08/02 Javascript
简单的Jquery遮罩层代码实例
2013/11/14 Javascript
nodejs读取memcache示例分享
2014/01/02 NodeJs
JavaScript通过select动态更换图片的方法
2015/03/23 Javascript
轻松实现jquery选项卡切换效果
2016/10/10 Javascript
百度多文件异步上传控件webuploader基本用法解析
2016/11/07 Javascript
Bootstrap3 图片(响应式图片&图片形状)
2017/01/04 Javascript
微信小程序 解析网页内容详解及实例
2017/02/22 Javascript
Windows下快速搭建NodeJS本地服务器的步骤
2017/08/09 NodeJs
ES6 javascript中class静态方法、属性与实例属性用法示例
2017/10/30 Javascript
JS实现判断有效的数独算法示例
2019/02/25 Javascript
Vue注册组件命名时不能用大写的原因浅析
2019/04/25 Javascript
LayUI动态设置checkbox不显示的解决方法
2019/09/02 Javascript
[01:01]青春无憾,一战成名——DOTA2全国高校联赛开启
2018/02/25 DOTA
python使用PyGame模块播放声音的方法
2015/05/20 Python
Python中的一些陷阱与技巧小结
2015/07/10 Python
python 同时运行多个程序的实例
2019/01/07 Python
VSCode中自动为Python文件添加头部注释
2019/11/14 Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
2020/01/02 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
2020/03/24 Python
如何在Win10系统使用Python3连接Hive
2020/10/15 Python
Python爬虫爬取有道实现翻译功能
2020/11/27 Python
CSS3实现网站商品展示效果图
2020/01/18 HTML / CSS
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/01/13 面试题
J2EE相关知识面试题
2013/08/26 面试题
应届大学生求职信
2013/12/01 职场文书
村长贪污检举信
2014/04/04 职场文书
司机个人年终总结
2015/03/03 职场文书
2015年秋季灭鼠工作总结
2015/07/27 职场文书
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
2021/04/13 Javascript
分享几种python 变量合并方法
2022/03/20 Python