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 使用folium绘制leaflet地图的实现方法
Jul 05 Python
Django 缓存配置Redis使用详解
Jul 23 Python
详解程序意外中断自动重启shell脚本(以Python为例)
Jul 26 Python
Numpy 中的矩阵求逆实例
Aug 26 Python
python 定义类时,实现内部方法的互相调用
Dec 25 Python
谈谈Python:为什么类中的私有属性可以在外部赋值并访问
Mar 05 Python
django 外键创建注意事项说明
May 20 Python
详解pyinstaller生成exe的闪退问题解决方案
Jun 19 Python
python中有帮助函数吗
Jun 19 Python
解决Keras的自定义lambda层去reshape张量时model保存出错问题
Jul 01 Python
Python matplotlib图例放在外侧保存时显示不完整问题解决
Jul 28 Python
python和opencv构建运动检测器的实现
Mar 03 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
怎样在UNIX系统下安装MySQL
2006/10/09 PHP
PHP实现无限极分类图文教程
2014/11/25 PHP
ThinkPHP中redirect用法分析
2014/12/05 PHP
laravel 修改记住我功能的cookie保存时间的方法
2019/10/14 PHP
自写简单JS判断是否已经弹出页面
2010/10/20 Javascript
jquery cookie的用法总结
2013/11/18 Javascript
AngularJS的一些基本样式初窥
2015/07/27 Javascript
jquery彩色投票进度条简单实例演示
2020/07/23 Javascript
js实现瀑布流的三种方式比较
2020/06/28 Javascript
学习使用Bootstrap输入框、导航、分页等常用组件
2017/05/11 Javascript
微信小程序 图片宽高自适应详解
2017/05/11 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
2017/08/15 jQuery
Vue 源码分析之 Observer实现过程
2018/03/29 Javascript
seajs和requirejs模块化简单案例分析
2019/08/26 Javascript
浅谈JavaScript中this的指向问题
2020/07/28 Javascript
使用Python编写爬虫的基本模块及框架使用指南
2016/01/20 Python
Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能示例
2018/05/16 Python
python分批定量读取文件内容,输出到不同文件中的方法
2018/12/08 Python
Python实现的调用C语言函数功能简单实例
2019/03/13 Python
Python程序包的构建和发布过程示例详解
2019/06/09 Python
python rsync服务器之间文件夹同步脚本
2019/08/29 Python
Python3操作Excel文件(读写)的简单实例
2019/09/02 Python
利用python实现AR教程
2019/11/20 Python
在PyCharm中实现添加快捷模块
2020/02/12 Python
环境工程毕业生自荐信
2013/11/17 职场文书
QA工程师岗位职责
2013/11/20 职场文书
幼儿教师研修感言
2014/02/12 职场文书
财务管理专业自荐书
2014/09/02 职场文书
2014年最新离婚协议书范本
2014/10/11 职场文书
批评与自我批评总结
2014/10/17 职场文书
三行辞职书范文
2015/02/26 职场文书
2015年119消防宣传日活动总结
2015/03/24 职场文书
2015年电话客服工作总结
2015/05/18 职场文书
mysql批量新增和存储的方法实例
2021/04/07 MySQL
Java SSH 秘钥连接mysql数据库的方法
2021/06/28 Java/Android
小喇叭开始广播了! 四十多年前珍贵老照片
2022/05/09 无线电