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版本的按任意键继续/退出
Sep 26 Python
python+mongodb数据抓取详细介绍
Oct 25 Python
Python编程之黑板上排列组合,你舍得解开吗
Oct 30 Python
python绘制中国大陆人口热力图
Nov 07 Python
pandas中的series数据类型详解
Jul 06 Python
python matplotlib如何给图中的点加标签
Nov 14 Python
python DataFrame转dict字典过程详解
Dec 26 Python
Python如何执行精确的浮点数运算
Jul 31 Python
详解BeautifulSoup获取特定标签下内容的方法
Dec 07 Python
Python 多线程之threading 模块的使用
Apr 14 Python
python opencv通过4坐标剪裁图片
Jun 05 Python
教你用Python+selenium搭建自动化测试环境
Jun 18 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报表之jpgraph柱状图实例代码
2011/08/22 PHP
PHP中usort在值相同时改变原始位置问题的解决方法
2011/11/27 PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
2014/06/13 PHP
PHP @ at 记号的作用示例介绍
2014/10/10 PHP
让ThinkPHP支持大小写url地址访问的方法
2014/10/31 PHP
基于PHP实现简单的随机抽奖小程序
2016/01/05 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
PHP时间相关常用函数用法示例
2020/06/03 PHP
MooBox 基于Mootools的对话框插件
2012/01/20 Javascript
通过onmouseover选项卡实现img图片的变化
2014/02/12 Javascript
jQuery焦点图左右转换效果
2016/12/12 Javascript
jQuery Validate插件自定义验证规则的方法
2016/12/27 Javascript
Angular2库初探
2017/03/01 Javascript
详解前后端分离之VueJS前端
2017/05/24 Javascript
在vue中实现禁止屏幕滚动,禁止屏幕滑动
2020/07/22 Javascript
原生JS实现九宫格抽奖
2020/09/13 Javascript
[58:42]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第一局
2016/02/27 DOTA
[03:37]2016完美“圣”典 风云人物:Mikasa专访
2016/12/07 DOTA
对Python中for复合语句的使用示例讲解
2018/11/01 Python
在python中pandas的series合并方法
2018/11/12 Python
python得到一个excel的全部sheet标签值方法
2018/12/10 Python
Python一个简单的通信程序(客户端 服务器)
2019/03/06 Python
Python3常用内置方法代码实例
2019/11/18 Python
python操作gitlab API过程解析
2019/12/27 Python
PyQt5中向单元格添加控件的方法示例
2020/03/24 Python
优瑞自动咖啡机官网:Jura
2018/09/29 全球购物
女大学生毕业找工作的自我评价
2013/10/03 职场文书
优秀党支部事迹材料
2014/01/14 职场文书
设备动力科岗位职责范本
2014/02/23 职场文书
教堂婚礼主持词
2014/03/14 职场文书
破坏寝室公物检讨书
2014/11/17 职场文书
质量承诺书格式范文
2015/04/28 职场文书
教研活动主持词
2015/07/03 职场文书
使用pytorch实现线性回归
2021/04/11 Python
SQL实现LeetCode(197.上升温度)
2021/08/07 MySQL
python中字符串String及其常见操作指南(方法、函数)
2022/04/06 Python