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 pickle 和 shelve模块的用法
Sep 16 Python
python读取html中指定元素生成excle文件示例
Apr 03 Python
九步学会Python装饰器
May 09 Python
用Python设计一个经典小游戏
May 15 Python
python微信撤回监测代码
Apr 29 Python
python itchat实现调用微信接口的第三方模块方法
Jun 11 Python
Python TCPServer 多线程多客户端通信的实现
Dec 31 Python
Pytorch中膨胀卷积的用法详解
Jan 07 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
Jan 20 Python
tensorflow常用函数API介绍
Apr 19 Python
3种适用于Python的疯狂秘密武器及原因解析
Apr 29 Python
python 实现 hive中类似 lateral view explode的功能示例
May 18 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与javascript的两种交互方式
2006/10/09 PHP
PHP 函数语法介绍一
2009/06/14 PHP
PHP定时执行计划任务的多种方法小结
2011/12/19 PHP
PHP error_log()将错误信息写入一个文件(定义和用法)
2013/10/25 PHP
php foreach正序倒序输出示例代码
2014/07/01 PHP
smarty模板引擎从php中获取数据的方法
2015/01/22 PHP
深入浅出php socket编程
2015/05/13 PHP
PHP递归实现文件夹的复制、删除、查看大小操作示例
2017/08/11 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
php防止表单重复提交实例讲解
2019/02/11 PHP
AlertBox 弹出层信息提示框效果实现步骤
2010/10/11 Javascript
怎样在JavaScript里写一个swing把数据插入数据库
2012/12/10 Javascript
jquery插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)
2013/02/04 Javascript
JS 使用for循环遍历子节点查找元素
2014/09/06 Javascript
Javascript实现网络监测的方法
2015/07/31 Javascript
JS实现仿微博可关闭弹出层效果
2015/09/21 Javascript
原生js实现autocomplete插件
2016/04/14 Javascript
Vuex模块化实现待办事项的状态管理
2017/03/15 Javascript
微信小程序picker组件下拉框选择input输入框的实例
2017/09/20 Javascript
AngularJs 终极购物车(实例讲解)
2017/11/08 Javascript
微信小程序开发之左右分栏效果的实例代码
2019/05/20 Javascript
小谈angular ng deploy的实现
2020/04/07 Javascript
详解Vue数据驱动原理
2020/11/17 Javascript
python仿evething的文件搜索器实例代码
2019/05/13 Python
Python调用钉钉自定义机器人的实现
2020/01/03 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
2020/04/27 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
2020/04/30 Python
python等待10秒执行下一命令的方法
2020/07/19 Python
详解Open Folder as PyCharm Project怎么添加的方法
2020/12/29 Python
美国在线面料商店:Fashion Fabrics Club
2020/01/31 全球购物
大学四年个人自我小结
2014/03/05 职场文书
525心理活动总结
2014/07/04 职场文书
检讨书之工作不认真
2019/08/14 职场文书
MySQL基础(二)
2021/04/05 MySQL
golang协程池模拟实现群发邮件功能
2021/05/02 Golang
详解redis分布式锁的这些坑
2021/05/19 Redis