python实现批量视频分帧、保存视频帧


Posted in Python onMay 31, 2019

本篇博客介绍利用python脚本实现视频分帧,并将每一帧保存到本地。主要基于opencv包来实现,在运行代码前确保opencv包已正确安装。下面是主要代码:

import os 
import cv2
 
videos_src_path = '/home/shao/violence_detection_code/Movies_Dataset/fights'
videos_save_path = '/home/shao/violence_detection_code/Movies_Dataset/fights_pic'
 
videos = os.listdir(videos_src_path)
videos.sort(key=lambda x:int(x[5:-4]))
 
i = 1
 
for each_video in videos:
 if not os.path.exists(videos_save_path + '/' + str(i)):
 os.mkdir(videos_save_path + '/' + str(i))
 each_video_save_full_path = os.path.join(videos_save_path,str(i))+'/'
 each_video_full_path = os.path.join(videos_src_path,each_video)
 cap = cv2.VideoCapture(each_video_full_path)
 frame_count = 1
 success = True
 
 while(success):
 success,frame = cap.read()
 if success==True:
 cv2.imwrite(each_video_save_full_path + "frame%d.jpg" % frame_count,
 frame)
 frame_count = frame_count + 1
 i = i + 1
 
 cap.release()

代码注释:

1.第1,2行完成导入几个需要的包;

2.第4,5行分别是待分帧的原始视频路径、分帧后需要保存视频帧的文件路径;这里需要注意的是,我写的是文件夹,也就是说在/home/shao/violence_detection_code/Movies_Dataset/fights目录下有多个视频XXX.avi,XXX.avi等形式;如果只需要处理单个视频的话,可以稍微改一下即可。

3.第7行表示将所有视频的文件名存到videos中,第8行是可选项,表示对fights文件夹下的视频进行排序,x[5:-4]表示按照文件名第5个字符到倒数第4个字符之间的符号排序,因为我的视频是newfi1.avi,newfi2.avi……的格式,我想实现的是按照数字1,2,3的顺序提取视频帧;

4.之后的代码就是循环处理每个视频,将每个视频的视频帧保存到文件夹中。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python内置的字符串处理函数详细整理(覆盖日常所用)
Aug 19 Python
Python中input和raw_input的一点区别
Oct 21 Python
Python中使用OpenCV库来进行简单的气象学遥感影像计算
Feb 19 Python
Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例
Aug 31 Python
详解Python自建logging模块
Jan 29 Python
Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS浅析
May 08 Python
Python中一些不为人知的基础技巧总结
May 19 Python
关于python写入文件自动换行的问题
Jun 23 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
Aug 22 Python
python实现求特征选择的信息增益
Dec 18 Python
深入学习python多线程与GIL
Aug 26 Python
Pytorch 使用不同版本的cuda的方法步骤
Apr 02 Python
Python内置random模块生成随机数的方法
May 31 #Python
Python模块、包(Package)概念与用法分析
May 31 #Python
python多线程下信号处理程序示例
May 31 #Python
浅谈Python大神都是这样处理XML文件的
May 31 #Python
Python2.7实现多进程下开发多线程示例
May 31 #Python
Python3内置模块之json编解码方法小结【推荐】
Dec 09 #Python
一文了解Python并发编程的工程实现方法
May 31 #Python
You might like
一个域名查询的程序
2006/10/09 PHP
PHP函数import_request_variables()用法分析
2016/04/02 PHP
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
2006/10/17 Javascript
javascript TextArea动态显示剩余字符
2008/10/22 Javascript
Js点击弹出下拉菜单效果实例
2013/08/12 Javascript
JavaScript中判断变量是数组、函数或是对象类型的方法
2015/02/25 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
2015/02/27 Javascript
学习JavaScript正则表达式
2015/11/13 Javascript
基于javascript如何传递特殊字符
2015/11/30 Javascript
js添加绑定事件的方法
2016/05/15 Javascript
前端框架Vue.js构建大型应用浅析
2016/09/12 Javascript
NodeJs读取JSON文件格式化时的注意事项
2016/09/25 NodeJs
vue实现ajax滚动下拉加载,同时具有loading效果(推荐)
2017/01/11 Javascript
详解使用nodeJs安装Vue-cli
2017/05/17 NodeJs
详解vue axios中文文档
2017/09/12 Javascript
jquery ajaxfileupload异步上传插件
2017/11/21 jQuery
Vue中Axios从远程/后台读取数据
2019/01/21 Javascript
浅谈VUE防抖与节流的最佳解决方案(函数式组件)
2019/05/22 Javascript
如何在微信小程序中存setStorage
2019/12/13 Javascript
JavaScript cookie原理及使用实例
2020/05/08 Javascript
[51:50]完美世界DOTA2联赛 Magma vs GXR 第一场 11.07
2020/11/10 DOTA
Python计算回文数的方法
2015/03/11 Python
Python修改MP3文件的方法
2015/06/15 Python
Python多线程爬虫简单示例
2016/03/04 Python
python timestamp和datetime之间转换详解
2017/12/11 Python
python异常触发及自定义异常类解析
2019/08/06 Python
Python @property使用方法解析
2019/09/17 Python
Python pandas RFM模型应用实例详解
2019/11/20 Python
Python3安装模块报错Microsoft Visual C++ 14.0 is required的解决方法
2020/07/28 Python
Python try except else使用详解
2021/01/12 Python
GOOD AMERICAN官网:为曲线性感而设计
2017/12/28 全球购物
转党组织关系介绍信
2014/01/08 职场文书
农业项目合作意向书
2015/05/08 职场文书
2015年政治教研组工作总结
2015/07/22 职场文书
Pandas搭配lambda组合使用详解
2022/01/22 Python
python实现学生信息管理系统(面向对象)
2022/06/05 Python