python对视频截帧的俩个方法

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

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

  1. 安装环境:

     pip install imageio
     
     pip install skimage
    

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

	pip install scikit-image

环境安装成功。
在这里插入图片描述
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

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 撸撸猫 设计师:C马雯娟 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值