Python OpenCV实现视频分帧


Posted in Python onJune 01, 2019

本文实例为大家分享了Python OpenCV实现视频分帧的具体代码,供大家参考,具体内容如下

# coding=utf-8

import os
import cv2

videos_src_path = "/home/wgp/视频/"
video_formats = [".MP4", ".MOV"]
frames_save_path = "/home/wgp/视频/"
width = 320
height = 240
time_interval = 50


def video2frame(video_src_path, formats, frame_save_path, frame_width, frame_height, interval):
 """
 将视频按固定间隔读取写入图片
 :param video_src_path: 视频存放路径
 :param formats: 包含的所有视频格式
 :param frame_save_path: 保存路径
 :param frame_width: 保存帧宽
 :param frame_height: 保存帧高
 :param interval: 保存帧间隔
 :return: 帧图片
 """
 videos = os.listdir(video_src_path)

 def filter_format(x, all_formats):
 if x[-4:] in all_formats:
  return True
 else:
  return False

 videos = filter(lambda x: filter_format(x, formats), videos)

 for each_video in videos:
 print "正在读取视频:", each_video

 each_video_name = each_video[:-4]
 os.mkdir(frame_save_path + each_video_name)
 each_video_save_full_path = os.path.join(frame_save_path, each_video_name) + "/"

 each_video_full_path = os.path.join(video_src_path, each_video)

 cap = cv2.VideoCapture(each_video_full_path)
 frame_index = 0
 frame_count = 0
 if cap.isOpened():
  success = True
 else:
  success = False
  print("读取失败!")

 while(success):
  success, frame = cap.read()
  print "---> 正在读取第%d帧:" % frame_index, success

  if frame_index % interval == 0:
  resize_frame = cv2.resize(frame, (frame_width, frame_height), interpolation=cv2.INTER_AREA)
  # cv2.imwrite(each_video_save_full_path + each_video_name + "_%d.jpg" % frame_index, resize_frame)
  cv2.imwrite(each_video_save_full_path + "%d.jpg" % frame_count, resize_frame)
  frame_count += 1

  frame_index += 1

 cap.release()


if __name__ == '__main__':
 video2frame(videos_src_path, video_formats, frames_save_path, width, height, time_interval)

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

Python 相关文章推荐
查看Python安装路径以及安装包路径小技巧
Apr 28 Python
Python的Django框架可适配的各种数据库介绍
Jul 15 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
Jun 01 Python
Python 模拟登陆的两种实现方法
Aug 10 Python
PyQt5主窗口动态加载Widget实例代码
Feb 07 Python
浅谈pandas中DataFrame关于显示值省略的解决方法
Apr 08 Python
Python语法分析之字符串格式化
Jun 13 Python
python实现的汉诺塔算法示例
Oct 23 Python
基于Pycharm加载多个项目过程图解
Jan 19 Python
Python换行与不换行的输出实例
Feb 19 Python
Python threading.local代码实例及原理解析
Mar 16 Python
pytorch实现查看当前学习率
Jun 24 Python
python的set处理二维数组转一维数组的方法示例
May 31 #Python
python整合ffmpeg实现视频文件的批量转换
May 31 #Python
python自动发邮件总结及实例说明【推荐】
May 31 #Python
python实现视频分帧效果
May 31 #Python
使用Python实现跳帧截取视频帧
May 31 #Python
python tools实现视频的每一帧提取并保存
Mar 20 #Python
Python从list类型、range()序列简单认识类(class)【可迭代】
May 31 #Python
You might like
php中将字符串转为HTML的实体引用的一个类
2013/02/03 PHP
phpstrom使用xdebug配置方法
2013/12/17 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
2014/09/29 PHP
PDO的安全处理与事物处理方法
2016/10/31 PHP
XP折叠菜单&仿QQ2006菜单
2006/12/16 Javascript
div移动 输入框不能输入的问题
2009/11/19 Javascript
利用json获取字符出现次数的代码
2012/03/22 Javascript
javascript数组快速打乱重排的方法
2014/01/02 Javascript
JavaScript中使用stopPropagation函数停止事件传播例子
2014/08/27 Javascript
如何防止JavaScript自动插入分号
2015/11/05 Javascript
jquery读写cookie操作实例分析
2015/12/24 Javascript
jquery自定义右键菜单、全选、不连续选择
2016/03/01 Javascript
node.js 抓取代理ip实例代码
2017/04/30 Javascript
node.js中fs.stat与fs.fstat的区别详解
2017/06/01 Javascript
关于Vue在ie10下空白页的debug小结
2018/05/02 Javascript
Vue中使用 setTimeout() setInterval()函数的问题
2018/09/13 Javascript
jQuery实现当拉动滚动条到底部加载数据的方法分析
2019/01/24 jQuery
Echarts地图添加引导线效果(labelLine)
2019/09/30 Javascript
taro小程序添加骨架屏的实现代码
2019/11/15 Javascript
leaflet加载geojson叠加显示功能代码
2020/02/21 Javascript
[01:05]DOTA2完美大师赛趣味视频之选手教你打职业
2017/11/23 DOTA
python 全局变量的import机制介绍
2017/09/07 Python
Python如何实现MySQL实例初始化详解
2017/11/06 Python
Python通过OpenCV的findContours获取轮廓并切割实例
2018/01/05 Python
win10下tensorflow和matplotlib安装教程
2018/09/19 Python
python 图像平移和旋转的实例
2019/01/10 Python
python实现图像全景拼接
2020/03/27 Python
python实现人像动漫化的示例代码
2020/05/17 Python
CSS3 transforms应用于背景图像的解决方法
2019/04/16 HTML / CSS
匡威英国官网:Converse英国
2018/12/02 全球购物
环保专项行动方案
2014/05/12 职场文书
2015年销售员工作总结范文
2015/04/07 职场文书
小兵张嘎电影观后感
2015/06/03 职场文书
2016年感恩父亲节活动总结
2016/04/01 职场文书
MybatisPlus代码生成器的使用方法详解
2021/06/13 Java/Android
带你了解Java中的ForkJoin
2022/04/28 Java/Android