# python读取视频流提取视频帧的方法

注意事项(路径尽量全部英文,不然很可能会耽误很多时间)

  1. 安装环境:

    pip install imageio
    
    pip install skimage

这时候会报错:
Please install the scikit-image package (instead of skimage)
所以按照提示操作即可:

pip install scikit-image

环境安装成功。

{% image /imgs/2019012211141851.png '在这里插入图片描述' '' %}

2、cv2模块安装,刚开始看到别人写的import cv2 以为是需要安装pip install cv2(尴尬。。。结果是 pip install opencv-python)

pip install opencv-python

3、视频截帧代码

方法一:

使用imageio库提取视频帧
imageio官方文档地址:http://imageio.readthedocs.io/en/latest/examples.html
# coding:utf-8
import imageio
import pylab

# 注释的代码执行一次就好,以后都会默认下载完成
# imageio.plugins.ffmpeg.download()

# 视频的绝对路径
filename =r'e:\video\159725149.mp4'
# 可以选择解码工具
# print(filename)
# vid = imageio.get_reader(uri=filename, format='ffmpeg')
vid = imageio.get_reader(filename ,'ffmpeg')
print(type(vid),len(vid))
try:
    # 这个地方需要加个异常处理,我也不知道什么原因,用imageio读取的视频总是最后俩帧是无法读取,用俩个视频测试都是如此,就加个异常,忽略最后俩帧就可以了。
    for num, im in enumerate(vid):
        print(num)
        if (num % 101) == 0:
            imageio.imwrite('E:\save_photo_from_video\{}.jpg'.format(num // 101), im)
except imageio.core.format.CannotReadFrameError or RuntimeError:
    pass

# for num, im in enumerate(vid):
#     print(num)
#     if (num % 101) == 0:
#         imageio.imwrite('E:\save_photo_from_video\{}.jpg'.format(num // 101), im)

方法二:

需要安装opencv-python,也就是导入cv2模块。

'''    pip install opencv-python'''

用法:

#!usr/bin/python
import cv2

# 需要安装opencv-python
'''    pip install opencv-python'''

# 读入视频文件
vc = cv2.VideoCapture(r'D:\zjf_workspace\000爬虫代码-基础的\scrapy_100_工具\视频处理\mp4\55563878.mp4')

c = 1
if vc.isOpened():
    # 判断是否正常打开
    real, frame = vc.read()
    # print(real)
else:
    real = False

timeF = 100
# 视频帧计数间隔频率

while real:
    real, frame = vc.read()
    # print(real, frame)
    if (c % timeF == 0):
        # 每隔timeF帧进行储存为图像,(注意保存地址必须全部为英文和数字,不能含有中文或者中文字符,我这个错误就是刚开始不知道是地址中文原因,找了好久。)
        cv2.imwrite(r'E:\save_photo_from_video' + '\\' + str(c // timeF) + '.jpg', frame)
    c += 1
    cv2.waitKey(1)
vc.release()

参考文章:
https://blog.csdn.net/NFMSR/article/details/78559930
https://blog.csdn.net/xinxing__8185/article/details/48440133