Python将视频或者动态图gif逐帧保存为图片的方法


Posted in Python onSeptember 10, 2019

本文是基于opencv将视频和动态图gif保存为图像帧。可以根据输入视频格式的不同,修改第21行。

       对动图的处理不同于视频,PIL库包含对图像序列的基本支持。当打开gif图像时,自动加载第一帧。当图像读取完成时,抛出EOFError异常。我们可以使用seek()与tell()函数完成图像帧的读取。

       本代码的前部分是对文件的读取。数据集文件结构如下:

|——datasets
  |——action1
   action1_1.gif
   action1_2.gif
   ......
  |——action2
   action2_1.gif
   action2_2.gif
   ......
import cv2
import os
from PIL import Image
video_path = 'PATH_ROOT/datasets/' #视频或gif图像的路径
save_path = 'PATH_ROOT/save/' #保存帧的路径
action_list = os.listdir(video_path)
for action in action_list:
 if not os.path.exists(save_path+action):
  os.mkdir(save_path+action)
 video_list = os.listdir(video_path+action)
 for video in video_list:
  prefix = video.split('.')[0]
  if not os.path.exists(save_path+action+'/'+prefix):
   os.mkdir(save_path+action+'/'+prefix)
  save_name = save_path + action + '/' + prefix + '/'
  video_name = video_path+action+'/'+video
  name = video_name.split('.')[1]
  if name == "avi":
   cap = cv2.VideoCapture(video_name)
   fps = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
   fps_count = 0
   for i in range(fps):
    ret, frame = cap.read()
    if ret:
     cv2.imwrite(save_name + str(10000 + fps_count) + '.jpg', frame)
     fps_count += 1
  if name == "gif":
   im = Image.open(video_name)
   #当打开一个序列文件时,PIL库自动加载第一帧。
   #可以使用seek()函数和tell()函数在不同帧之间移动。实现保存
   try:
    while True:
     current = im.tell()
     #为了保存为jpg格式,需要转化。否则可以保存为png
     img = im.convert('RGB') 
     img.save(save_name+'/'+str(10000+current)+'.jpg')
     im.seek(current + 1)
   except EOFError:
    pass

知识点扩展:python如何将gif动态图转化成每帧图片

from PIL import Image
import os
gifFileName = 'test.gif'
#使用Image模块的open()方法打开gif动态图像时,默认是第一帧
im = Image.open(gifFileName)
pngDir = gifFileName[:-4]
#创建存放每帧图片的文件夹
os.mkdir(pngDir)
try:
 while True:
  #保存当前帧图片
  current = im.tell()
  im.save(pngDir+'/'+str(current)+'.png')
  #获取下一帧图片
  im.seek(current+1)
except EOFError:
  pass

总结

以上所述是小编给大家介绍的Python将视频或者动态图gif逐帧保存为图片的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
在漏洞利用Python代码真的很爽
Aug 26 Python
Python中的自定义函数学习笔记
Sep 23 Python
详解Python中的__new__()方法的使用
Apr 09 Python
Flask框架踩坑之ajax跨域请求实现
Feb 22 Python
python 基于TCP协议的套接字编程详解
Jun 29 Python
python中bs4.BeautifulSoup的基本用法
Jul 27 Python
简单了解python元组tuple相关原理
Dec 02 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
Jun 29 Python
使用Python绘制台风轨迹图的示例代码
Sep 21 Python
Python爬虫之Selenium实现窗口截图
Dec 04 Python
pymongo insert_many 批量插入的实例
Dec 05 Python
Python 快速验证代理IP是否有效的方法实现
Jul 15 Python
python使用PIL和matplotlib获取图片像素点并合并解析
Sep 10 #Python
Python字符串中添加、插入特定字符的方法
Sep 10 #Python
详解python uiautomator2 watcher的使用方法
Sep 09 #Python
一行Python代码制作动态二维码的实现
Sep 09 #Python
python制作英语翻译小工具代码实例
Sep 09 #Python
Python pandas.DataFrame 找出有空值的行
Sep 09 #Python
Python制作词云图代码实例
Sep 09 #Python
You might like
php开发工具之vs2005图解
2008/01/12 PHP
PHP 八种基本的数据类型小结
2011/06/01 PHP
php中AES加密解密的例子小结
2014/02/18 PHP
PHP 读取和编写 XML
2014/11/19 PHP
php实现可用于mysql,mssql,pg数据库操作类
2014/12/13 PHP
PHP中防止SQL注入方法详解
2014/12/25 PHP
编写PHP脚本来实现WordPress中评论分页的功能
2015/12/10 PHP
分析 JavaScript 中令人困惑的变量赋值
2007/08/13 Javascript
20个最新的jQuery插件
2012/01/13 Javascript
jQuery中click事件用法实例
2014/12/26 Javascript
JavaScript中定义函数的三种方法
2015/03/12 Javascript
jquery合并表格中相同文本的相邻单元格
2015/07/17 Javascript
JavaScript基于对象去除数组重复项的方法
2016/10/09 Javascript
jQuery动态生成不规则表格(前后端)
2017/02/21 Javascript
javascript  删除select中的所有option的实例
2017/09/17 Javascript
关于node-bindings无法在Electron中使用的解决办法
2018/12/18 Javascript
详解datagrid使用方法(重要)
2020/11/06 Javascript
在Django的form中使用CSS进行设计的方法
2015/07/18 Python
selenium python浏览器多窗口处理代码示例
2018/01/15 Python
Numpy之文件存取的示例代码
2018/08/03 Python
python引入不同文件夹下的自定义模块方法
2018/10/27 Python
python实现根据文件关键字进行切分为多个文件的示例
2018/12/10 Python
详解Python3定时器任务代码
2019/09/23 Python
安装并免费使用Pycharm专业版(学生/教师)
2020/09/24 Python
分享CSS3制作卡片式图片的方法
2016/07/08 HTML / CSS
施华洛世奇巴西官网:SWAROVSKI巴西
2019/12/03 全球购物
个人生活学习自我评价范文
2013/11/26 职场文书
公司行政经理岗位职责
2013/12/24 职场文书
化学教师教学反思
2014/01/17 职场文书
给市场的环保建议书
2014/05/14 职场文书
银行柜员求职自荐书
2014/06/18 职场文书
青年教师师德演讲稿
2014/08/26 职场文书
再婚婚前财产协议书范本
2014/10/19 职场文书
中学生检讨书范文
2014/11/03 职场文书
2015年挂职干部工作总结
2015/05/14 职场文书
关于CSS自定义属性与前端页面的主题切换问题
2022/03/21 HTML / CSS