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中下划线的使用方法
Mar 27 Python
编写Python脚本来实现最简单的FTP下载的教程
May 04 Python
python检查字符串是否是正确ISBN的方法
Jul 11 Python
用python制作游戏外挂
Jan 04 Python
python批量识别图片指定区域文字内容
Apr 30 Python
Puppeteer使用示例详解
Jun 20 Python
pytorch的batch normalize使用详解
Jan 15 Python
tensorflow生成多个tfrecord文件实例
Feb 17 Python
keras输出预测值和真实值方式
Jun 27 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
Jul 15 Python
Python pexpect模块及shell脚本except原理解析
Aug 03 Python
Pycharm中使用git进行合作开发的教程详解
Nov 17 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的ob_start();控制您的浏览器cache!
2006/11/25 PHP
学习php设计模式 php实现抽象工厂模式
2015/12/07 PHP
PHP7 弃用功能
2021/03/09 PHP
Prototype源码浅析 Number部分
2012/01/16 Javascript
js计算字符串长度包含的中文是utf8格式
2013/10/15 Javascript
Javascript Memoizer浅析
2014/10/16 Javascript
NodeJS学习笔记之Http模块
2015/01/13 NodeJs
JQuery异步加载PartialView的方法
2016/06/07 Javascript
jquery控制页面的展开和隐藏实现方法(推荐)
2016/10/15 Javascript
深入理解JS实现快速排序和去重
2016/10/17 Javascript
解析ajaxFileUpload 异步上传文件简单使用
2016/12/30 Javascript
jQuery 实现双击编辑表格功能
2017/06/19 jQuery
微信小程序实现点击文字页面跳转功能【附源码下载】
2017/12/12 Javascript
使用D3.js创建物流地图的示例代码
2018/01/27 Javascript
Vue 中使用vue2-highcharts实现曲线数据展示的方法
2018/03/05 Javascript
vuex提交state&&实时监听state数据的改变方法
2018/09/16 Javascript
JavaScript之解构赋值的理解
2019/01/30 Javascript
如何在vue中使用jointjs过程解析
2020/05/29 Javascript
Python subprocess模块学习总结
2014/03/13 Python
python遍历数组的方法小结
2015/04/30 Python
python对象及面向对象技术详解
2016/07/19 Python
python中利用xml.dom模块解析xml的方法教程
2017/05/24 Python
python实现抽奖小程序
2020/04/15 Python
python requests抓取one推送文字和图片代码实例
2019/11/04 Python
django修改models重建数据库的操作
2020/03/31 Python
英国虚拟主机服务商:eUKhost
2016/08/16 全球购物
佳能加拿大网上商店:Canon eStore Canada
2018/04/04 全球购物
澳大利亚领先的在线药房:Pharmacy Online(有中文站)
2020/02/22 全球购物
人力资源行政经理自我评价
2013/10/23 职场文书
工程业务员岗位职责
2013/12/31 职场文书
乡镇党的群众路线对照检查材料
2014/09/24 职场文书
农村文化建设标语
2014/10/07 职场文书
2014年物流工作总结
2014/11/25 职场文书
爱心募捐感谢信
2015/01/22 职场文书
公司优秀员工推荐信
2015/03/24 职场文书
民事代理词范文
2015/05/25 职场文书