python读取视频流提取视频帧的两种方法


Posted in Python onOctober 22, 2020

本文实例为大家分享了python读取视频流提取视频帧的具体代码,供大家参考,具体内容如下

方法一:通过imageio库和skimage库

1. 安装环境:

pip install imageio

pip install skimage

这时候会报错Please install the `scikit-image` package (instead of `skimage`)

所以按照提示操作即可:

pip install scikit-image

环境安装成功。

2.通过python安装ffmpge(用来解码视频流)

import imageio

imageio.plugins.ffmpeg.download()

这时候会提示:

Imageio: 'ffmpeg.linux64' was not found on your computer; downloading it now.Try 1. Download from https://github.com/imageio/imageio-binaries/raw/master/ffmpeg/ffmpeg.linux64 (27.2 MB)Downloading: 8192/28549024 bytes

开始进行下载ffmpeg

注意:下载这个文件很容易断线,所有可以先拿下载工具下载后,再放到下面路径,然后系统就会认为文件已经下载完了。
文件路径: /root/.imageio/ffmpeg/ffmpeg.linux6

如果不断线的话,文件就会存放在上述路径中。

下次执行就可以直接读取视频流了。

3. 使用imageio库提取视频帧

imageio官方文档地址

用法:

# coding:utf-8 
import pylab 
import imageio 
#注释的代码执行一次就好,以后都会默认下载完成 
#imageio.plugins.ffmpeg.download() 
import skimage 
import numpy as np 
 
#视频的绝对路径 
filename = 'video/01_01.wmv' 
#可以选择解码工具 
vid = imageio.get_reader(filename, 'ffmpeg') 
for num,im in enumerate(vid): 
 #image的类型是mageio.core.util.Image可用下面这一注释行转换为arrary 
 print im.mean() 
 image = skimage.img_as_float(im).astype(np.float64) 
 fig = pylab.figure() 
 fig.suptitle('image #{}'.format(num), fontsize=20) 
 pylab.imshow(im) 
pylab.show()

方式二:通过cv2库

用法:

import cv2 
video_full_path="video/01_01.wmv" 
cap = cv2.VideoCapture(video_full_path) 
print cap.isOpened() 
frame_count = 1 
success = True 
while(success): 
 success, frame = cap.read() 
 print 'Read a new frame: ', success 
 
 params = [] 
 #params.append(cv.CV_IMWRITE_PXM_BINARY) 
 params.append(1) 
 cv2.imwrite("video" + "_%d.jpg" % frame_count, frame, params) 
 
 frame_count = frame_count + 1 
 
cap.release()

存在问题:cap.isOpened()总是输出false,表示打开失败。没办法读取,问题一直没有解决,如果有哪位大神解决还往告知!!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详解Python中映射类型(字典)操作符的概念和使用
Aug 19 Python
python 矩阵增加一行或一列的实例
Apr 04 Python
JSON文件及Python对JSON文件的读写操作
Oct 07 Python
python获取时间及时间格式转换问题实例代码详解
Dec 06 Python
Python弹出输入框并获取输入值的实例
Jun 18 Python
浅析Python与Mongodb数据库之间的操作方法
Jul 01 Python
Pandas0.25来了千万别错过这10大好用的新功能
Aug 07 Python
python lambda表达式在sort函数中的使用详解
Aug 28 Python
python对一个数向上取整的实例方法
Jun 18 Python
Python图像处理之膨胀与腐蚀的操作
Feb 07 Python
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
Jun 11 Python
python迷宫问题深度优先遍历实例
Jun 20 Python
python读取和保存视频文件
Apr 16 #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
You might like
PHP新手上路(八)
2006/10/09 PHP
php xfocus防注入资料
2008/04/27 PHP
PHP原理之异常机制深入分析
2010/08/08 PHP
php实现的百度搜索某地天气的小偷代码
2014/04/23 PHP
Javascript 遍历对象中的子对象
2009/07/03 Javascript
Javascript中的getUTCDay()方法使用详解
2015/06/10 Javascript
jQuery Validate初步体验(二)
2015/12/12 Javascript
JavaScript开发者必备的10个Sublime Text插件
2016/02/27 Javascript
jQuery数据检索中根据关键字快速定位GridView指定行的实现方法
2016/06/08 Javascript
ion content 滚动到底部会遮住一部分视图的快速解决方法
2016/09/06 Javascript
用 Vue.js 递归组件实现可折叠的树形菜单(demo)
2017/12/25 Javascript
vue 表单输入格式化中文输入法异常问题
2018/05/30 Javascript
JS实现按比例缩小图片宽高
2020/08/24 Javascript
Vue实现摇一摇功能(兼容ios13.3以上)
2021/01/26 Vue.js
[45:59]完美世界DOTA2联赛PWL S2 FTD vs GXR 第二场 11.22
2020/11/24 DOTA
举例讲解Python的Tornado框架实现数据可视化的教程
2015/05/02 Python
python实现比较两段文本不同之处的方法
2015/05/30 Python
python基于xmlrpc实现二进制文件传输的方法
2015/06/02 Python
python Django中models进行模糊查询的示例
2019/07/18 Python
tensorflow 实现自定义梯度反向传播代码
2020/02/10 Python
在Django中预防CSRF攻击的操作
2020/03/13 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
2020/12/01 Python
css3.0新属性效果在ie下的解决方案
2010/05/10 HTML / CSS
CSS3打造磨砂玻璃背景效果
2016/09/28 HTML / CSS
详解html5 postMessage解决跨域通信的问题
2018/08/17 HTML / CSS
学生就业推荐信
2013/11/13 职场文书
高中毕业生个人自我鉴定
2013/11/24 职场文书
项目经理任命书内容
2014/06/06 职场文书
皇城相府导游词
2015/02/06 职场文书
2015年清明节活动总结
2015/02/09 职场文书
因个人原因离职的辞职信范文
2015/05/12 职场文书
欧也妮葛朗台读书笔记
2015/06/30 职场文书
给校长的建议书作文300字
2015/09/14 职场文书
经销商会议开幕词
2016/03/04 职场文书
pytorch中Schedule与warmup_steps的用法说明
2021/05/24 Python
JAVA springCloud项目搭建流程
2022/05/11 Java/Android