基于python-opencv的视频连续逐帧截图自动生成图片方法(亲测可用!

 经常有小伙伴私信问我说有没有视频的电子版呀,PPT版啊之类的,想着长时间对着视频伤眼要是能打印出来就好了。如果你要是一张张视频截图然后一个个做成PPT那要做到什么时候啊,UP主突然发挥奇想,为什么不结合我大学计算机专业的特长,把这个复杂枯燥的人工过程,转变为简单自动的机器过程呢?毕竟,人生苦短,我用python哈哈哈。办公自动化是真的香!(好家伙,up主的业务越来越广了,秃头警告xN)

今天,图欧君来教大家如何把视频批量生成图片的方法:(这个方法,是up主我在csdn找到的,然后我升级改进了一下,不过目前这个版本只支持输入视频路径和图片路径,还不能自动新建文件夹和修改截图帧率,我会在下一个版本中改进)

废话不多说正片开始:

首先呢,准备工作:

  • 安装好pycharm和python 3(这个最基本的东西我就今天不细讲了哈)
  • 下载好你想要转图片PPT的视频
  • 新建一个py文件,然后复制下面这串代码粘贴上去
import cv2
import osprint('————欢迎来到视频连续截图自动生成系统2.0!————')
f = 30  # 截图速率默认为每30帧一张def transfer():  # 定义转换过程(核心代码)try:os.makedirs(pic_path)  # 自动在视频文件同一路径生成以视频文件名为名字的新文件夹except FileExistsError:print('————已存在与视频同名文件夹,请删除后再操作!————')quit()  # 存在同名文件夹系统报错,退出程序cap = cv2.VideoCapture(video)  # 导入视频文件num = 1  # 可在此处修改图片文件名起始序号print('————设置完成,即将开始导出图片!————')print('————' * 8)while True:if cap.grab():num += 1if num % f == 1:  # 每f帧截取一个图片flag, frame = cap.retrieve()  # 解码并返回一个帧if not flag:continueelse:cv2.imshow('video', frame)new = pic_path + "/" + pic_name + str(int(num / f)) + ".jpg"  # 定义图片的输出路径以及名字print('正在导出:' + pic_name + str(int(num / f)) + ".jpg (按Esc停止运行)")cv2.imencode('.jpg', frame)[1].tofile(new)  # 将生成的截图输出到新文件夹并命名else:  # 运行完毕自动退出breakif cv2.waitKey(10) == 27:  # 检测到按下Esc时退出quit()while True:  # 用户设置阶段try:video_path = input('请输入你的视频文件所在路径(如:F:/新建文件夹,注意是/斜杠和英文冒号):')  # 获取视频文件路径if not os.path.exists(video_path):  # 判断文件路径是否存在print('你输入的文件路径有误,请重新输入!')else:print('————文件路径匹配成功!————')breakexcept NameError:print('你输入的文件路径有误,请重新输入!')while True:try:video_name = input('请输入你的mp4视频文件名(不需要加后缀,如:我的视频):')  # 获取视频文件名video = video_path + "/" + video_name + ".mp4"   # 格式默认为mp4,如果你要转换别的格式,请在此处更改if not os.path.exists(video) or video_name == '':  # 判断文件是否存在print('你输入的文件名有误,请重新输入!')if os.path.exists(video) and video_name != '':print('————视频文件匹配成功!————')breakexcept ValueError:print('你输入的文件名有误,请重新输入!')while True:try:f = int(input('请输入你想要的帧数(即每多少帧截一张图,如:最小间隔逐帧截图,则输入2,不输入则默认设置为30):'))  # 获取用户的帧率需求,只限数字if f < 0:print('帧数不能为负!')elif f == 0:print('帧数不能为0!')elif f == 1:f += 1print('————帧数不支持设为1,截图速率已设置为' + str(f) + '帧一张!————')  # 帧数为1时,系统不运作,这个是bugbreakelse:print('————截图速率已成功设置为' + str(f) + '帧一张!————')breakexcept ValueError:print('————截图速率已自动设置为默认的' + str(f) + '帧一张!————')breakpic_name = input('请输入你要生成的图片名称(不输入则默认为纯数字,推荐不输入名字直接回车键,因为生成PPT需要纯数字的文件名):')  # 获取用户的图片文件名需求,文件名为:输入的名字+数字
if not pic_name:pic_name = ""  # 不输入则默认为空名字+数字
pic_path = video[:-4] + "/"  # 根据用户输入的视频文件路径来定义图片存放路径transfer()  # 主程序启动print('————' * 8)
print('运行完毕!图片已全部保存在:' + pic_path)
  • 然后,你要装一个外部组件库,名字叫【OpenCV】

    OpenCV的功能十分强大,强烈表白!这里不再多说:https://baike.baidu.com/item/opencv/10320623

方法一:键盘win+R 打开运行,输入cmd进入命令行窗口输入:pip install opencv-python

它会自动安装完成

方法二:在pycharm设置中安装opencv-python软件包


最后,点击运行,输入你的视频文件名路径以及图片文件夹路径点击回车键即可!

要注意两个地方:一个是.mp4的后缀,一个是要么 / 单斜杠,要么就 \ 双斜杠。

运行展示:

效果展示:

按Esc结束运行

对你有用的话点个赞再走吧~

【视频转图片】用python-opencv实现视频连续逐帧截图自动生成图片方法相关推荐

  1. python图片转视频加特效_使用Python opencv实现视频与图片的相互转换

    因为最近要经常转换数据集进行实验,因此记录一下. 1.视频转图片 即为将视频解析为一帧一帧的图片: import cv2 vc=cv2.VideoCapture("/home/hqd/Pyc ...

  2. python opencv PIL 视频分割成图片 图片合成为视频 修改图片大小(抗锯齿)

    Python代码将原有的视频分割成图片,我的例子是一帧一帧的分割 用python+opencv完成视频的分割 import cv2 #导入opencv模块 print(2) #测试是否运行 vc=cv ...

  3. 解决Python OpenCV 读取视频并抽帧出现error while decoding的问题

    解决Python OpenCV 读取视频抽帧出现error while decoding的问题 1. 问题 2. 解决 3. 源代码 参考 1. 问题 读取H264视频,抽帧视频并保存,报错如下: [ ...

  4. 使用Python,OpenCV在视频中进行实时条形码检测

    使用Python,OpenCV在视频中进行实时条形码检测 1. 步骤 2. 适用场景及优化 3. 总结 4. 源码 参考 上一篇博客介绍了如何检测和查找图像中的条形码.这篇博客将进行一些优化以检测实时 ...

  5. python opencv写视频——cv2.VideoWriter()

    python opencv写视频--cv2.VideoWriter() 函数原型 cv2.VideoWriter() VideoWriter(filename, fourcc, fps, frameS ...

  6. 使用Python自动给视频逐帧截图

    背景 数据集采集不单有图片格式,也有视频格式,有时我们需要根据采集来的视频生成图片,再进行标注.所以这里我们使用Python自动给视频逐帧截图. 注意:由于摄像机录制的视频大多是XMF格式,需要使用格 ...

  7. html在视频背景添加透明层,视频加图片水印并设置透明度 视频加半透明的图片水印|视频加图片背景并设置透明度...

    百无聊赖,周一晚上加个班撸一把教程.给视频加图片水印的方法大家应该都掌握了吧,看到这个教程的题目:给视频加图片水印并设置透明度,心中已有数,知道该怎么做了,啊哈.知道的就保留想法离去亦或者继续参考,教 ...

  8. python+opencv电表读数自动识别,电表电量自动读取

    python+opencv电表读数自动识别,电表电量自动读取,直接运行image_re.py,输入需要读数的电表图片即可,程序包中以提供测试图片(1.jpg-4.jpg).opencv采用3.4.15 ...

  9. python opencv 录制视频_OpenCV Python 录制视频

    学到实用OpenCV调用笔记本电脑的摄像头,并录制视频保存到本地硬盘的时候,出现了一点故障,那就是获取到的文件总是为0KB.经过一番查找,终于找到了解决办法. 调用摄像头 调用摄像头作为本实验的基础是 ...

最新文章

  1. mysql字符集和表字符集_设置数据库的字符集和设置表字段字符集的区别是什么?...
  2. mysql--SQL编程(关于mysql中的日期,关于重叠) 学习笔记2.2
  3. vue-devtools介绍与安装
  4. python权限管理系统_PMS:支持多应用的统一权限管理系统,用flask+vue实现
  5. C语言怎么确定用什么整形,【求助各位大虾!】 怎样用 if 语句验证一个整形数字。...
  6. 我的Go语言学习之旅六:做一个WIN的简单弹窗
  7. diamond operator is not supported in -source 1.5和source release 8 requires target release 1.8的问题
  8. mysql 命令 g_MySQL命令行的几个用法
  9. 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明) Cities(区间dp)
  10. OSGI和Spring动态模块–简单的Hello World
  11. 《天天数学》连载40:二月九日
  12. 阶段3 2.Spring_03.Spring的 IOC 和 DI_12 注入集合数据
  13. 【数据预测】基于matlab斑点鬣狗算法优化BP神经网络数据预测【含Matlab 219期】
  14. 计算机常用英语词汇一览表,计算机常用英语词汇总表
  15. kindle如何导入azw3格式的电子书
  16. ROS2极简总结-文件系统
  17. Python入门习题大全——T恤
  18. QMetaObject使用
  19. P6SPY(JDBC SQL拦截)的安装和使用
  20. 2022年最富有的科技亿万富翁前二十名,中国占3位

热门文章

  1. 如何精心设计CDN架构?
  2. Ajax 文件上传(前后端完整代码,注意修改文件保存路径\访问路径)
  3. 大数据分析之分类算法
  4. java中判断list是否为空的用法(亲测)
  5. 开源框架专栏-spring(1)
  6. Clean Architecture 实施指南
  7. html页面在华为点击不了,华为b5微信看不了 设置界面可全部禁用,也可全部允许...
  8. 跨境电商产品的评价怎么获取?
  9. 解析Joomla!模板
  10. Netty原理-Pipeline