基于python-opencv的视频连续逐帧截图自动生成图片方法(亲测可用!
经常有小伙伴私信问我说有没有视频的电子版呀,PPT版啊之类的,想着长时间对着视频伤眼要是能打印出来就好了。如果你要是一张张视频截图然后一个个做成PPT那要做到什么时候啊,UP主突然发挥奇想,为什么不结合我大学计算机专业的特长,把这个复杂枯燥的人工过程,转变为简单自动的机器过程呢?毕竟,人生苦短,我用python哈哈哈。办公自动化是真的香!(好家伙,up主的业务越来越广了,秃头警告xN)
今天,图欧君来教大家如何把视频批量生成图片的方法:(这个方法,是up主我在csdn找到的,然后我升级改进了一下,不过有点跳帧的问题,不知道哪位大神可以帮我完善一下。)
废话不多说正片开始:
首先呢,准备工作:
- 安装好pycharm和python 3(这个最基本的东西我就今天不细讲了哈)
- 下载好你想要转图片PPT的视频
新建一个py文件,然后复制下面这串代码粘贴上去
import cv2
def transfer(video, save):
cap = cv2.VideoCapture(video)
num = 0
while True:
if cap.grab():
num += 1
if num % 60 == 1: # 每60帧截取一个图片
flag, frame = cap.retrieve() #解码并返回一个帧
if not flag:
continue
else:
cv2.imshow('video', frame)
new = save + "\\" + str(int(num / 60)) + ".jpg"
print('正在输出:' + str(int(num / 60)) + ".jpg(按Esc停止运行)")
cv2.imencode('.jpg', frame)[1].tofile(new)
# 检测到按下Esc时,break(和imshow配合使用)
if cv2.waitKey(10) == 27:
break
print('欢迎来到视频连续截图自动生成系统!')
video = input('请输入你的视频文件路径(要包含文件名后缀,如:F:/四级核心.mp4):') # 在此处设置你的视频文件路径以及图片输出路径
save = input('请输入你的图片输出文件夹路径(要用/单斜杠隔开):')
transfer(video, save)
print('运行完毕!')
然后,你要装一个外部组件库,名字叫【OpenCV】
OpenCV的功能十分强大,强烈表白!这里不再多说:https://baike.baidu.com/item/opencv/10320623
- 方法一:键盘win+R 打开运行,输入cmd进入命令行窗口输入:pip install opencv-python
它会自动安装完成
- 方法二:在pycharm设置中安装opencv-python软件包
最后,点击运行,输入你的视频文件名路径以及图片文件夹路径点击回车键即可!
要注意两个地方:一个是.mp4的后缀,一个是要么 / 单斜杠,要么就 \ 双斜杠。
运行展示:
效果展示:
按Esc结束运行
对你有用的话点个赞再走吧~