Python imageio读取视频并进行编解码详解
作者:Anymake 发布时间:2021-02-20 07:32:53
读视频和写视频一直由于编解码的问题给程序员造成很多麻烦。对此进行了一些探索。用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()
来源:https://blog.csdn.net/Anymake_ren/article/details/78753707


猜你喜欢
- 实例如下:#!/usr/bin/env python# -*- coding: utf-8 -*-import socket#创建一个soc
- 一、 通过runtime包进行多核设置1.NumCPU()获取当前系统的cpu核数2.GOMAXPROCS设置当前程序运行时占用的cpu核数
- 对于mysql驱动问题折腾了一下午,现共享出解决方案1:手动安装驱动完全是场噩梦,推荐大家采用自动安装2:自动安装下载自动安装包,下载地址:
- 本文实例为大家分享了python开发飞机大战游戏的具体代码,供大家参考,具体内容如下import pygameimport randomim
- Python2.7编写的读取html中指定元素,并生成excle文件#coding=gbkimport stringimport codec
- 1.前言:将测试数据全部敲入数据库非常繁琐,而且如果与合作伙伴一起开发,部署,那么他们肯定也不想把时间花在一个一个录入数据的繁琐过程中,这时
- 本文实例讲述了PHP中soap的用法,分享给大家供大家参考。具体用法分析如下:PHP 使用soap有两种方式。一、用wsdl文件服务器端:&
- 一、开发环境python 3.6.6opencv-python 4.5.1二、设计要求1、使用opencv-python对人脸口罩进行检测三
- 分别针对ie和火狐分别作了对xml文档和xml字符串的解析,所有代码都注释掉了,想看哪部分功能,去掉注释就可以了。至于在ajax环境下解析x
- Python + opencv 读取视频的三种情况:情况一:通过摄像头采集视频情况二:通过本地视频文件获取视频情况三:通过摄像头录制视频,再
- 我们都知道打开文件有两种方法:f = open()with open() as f:这两种方法的区别就是第一种方法需要我们自己关闭文件;f.
- Asp中Server.ScriptTimeOut属性需要注意的一点Server.ScriptTimeout 这个属性给定Asp脚
- 按单字节计算字符串的长度,汉字算两个字节。<script type="text/JavaScript"
- 简单总结:1、与类和实例无绑定关系的function都属于函数(function);2、与类和实例有绑定关系的function都属于方法(m
- 本文实例为大家分享了tensorflow使用CNN分析mnist手写体数字数据集,供大家参考,具体内容如下import tensorflow
- 本文实例为大家分享了python opencv摄像头应用的具体代码,供大家参考,具体内容如下1、安装下载安装包pip install ope
- 1.pickle 写: 以写方式打开一个文件描述符,调用pickle.dump把对象写进去 &
- 本文实例讲述了js对象基础用法。分享给大家供大家参考。具体分析如下:js对象在本质上与数组相同,都是存放一组数据。但创建方法有所不同,对象需
- http协议学习系列
- 前言问题需求:拥有两个文件夹,一个保存图片image,一个保存标签文件,要求把标签文件中的标注提取出来,并在图片中画出来相应的思路首先提出各