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 Tkinter GUI编程入门介绍
Mar 10 Python
Python常见格式化字符串方法小结【百分号与format方法】
Sep 18 Python
python去掉空白行的多种实现代码
Mar 19 Python
python实现在pandas.DataFrame添加一行
Apr 04 Python
python实现括号匹配的思路详解
Aug 23 Python
Python之inspect模块实现获取加载模块路径的方法
Oct 16 Python
新年快乐! python实现绚烂的烟花绽放效果
Jan 30 Python
使用python远程操作linux过程解析
Dec 04 Python
Python3如何在Windows和Linux上打包
Feb 25 Python
Python用来做Web开发的优势有哪些
Aug 05 Python
PyCharm Ctrl+Shift+F 失灵的简单有效解决操作
Jan 15 Python
python实现简单的学生管理系统
Feb 22 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中isset()和unset()函数的用法小结
2014/03/11 PHP
php使用str_replace实现输入框回车替换br的方法
2014/11/24 PHP
两个JavaScript jsFiddle JSBin在线调试器
2010/03/14 Javascript
javascript对select标签的控制(option选项/select)
2013/01/31 Javascript
浅析offsetLeft,Left,clientLeft之间的区别
2013/11/30 Javascript
jquery如何实现锚点链接之间的平滑滚动
2013/12/02 Javascript
LABjs、RequireJS、SeaJS的区别
2014/03/04 Javascript
JS运动框架之分享侧边栏动画实例
2015/03/03 Javascript
原生js编写autoComplete插件
2016/04/13 Javascript
bootstrap警告框使用方法解析
2017/01/13 Javascript
js实现导航吸顶效果
2017/02/24 Javascript
vue跳转同一个组件,参数不同,页面接收值只接收一次的解决方法
2019/11/05 Javascript
35个Python编程小技巧
2014/04/01 Python
python3批量删除豆瓣分组下的好友的实现代码
2016/06/07 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
2017/06/01 Python
python3操作mysql数据库的方法
2017/06/23 Python
python的paramiko模块实现远程控制和传输示例
2017/10/13 Python
DataFrame中的object转换成float的方法
2018/04/10 Python
基于numpy中的expand_dims函数用法
2019/12/18 Python
Python实现图像的垂直投影示例
2020/01/17 Python
Jupyter Notebook远程登录及密码设置操作
2020/04/10 Python
5 分钟读懂Python 中的 Hook 钩子函数
2020/12/09 Python
HTML5地理定位与第三方工具百度地图的应用
2016/11/17 HTML / CSS
找到不普通的东西:Bonanza
2016/10/20 全球购物
J2ee常用的设计模式?说明工厂模式
2015/05/21 面试题
个人简历自我评价范文
2014/02/04 职场文书
函授药学自我鉴定
2014/02/07 职场文书
行政部工作岗位职责范本
2014/03/05 职场文书
环保倡议书500字
2014/05/15 职场文书
企业贷款委托书格式
2014/09/12 职场文书
2014年班级工作总结
2014/11/14 职场文书
2014年法务工作总结
2014/12/11 职场文书
会议接待欢迎词范文
2015/01/26 职场文书
工厂仓管员岗位职责
2015/04/01 职场文书
党员转正大会主持词
2015/07/02 职场文书
《伯牙绝弦》教学反思
2016/02/16 职场文书