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中getattr函数和hasattr函数作用详解
Jun 14 Python
Python数据结构与算法之字典树实现方法示例
Dec 13 Python
python机器学习实战之K均值聚类
Dec 20 Python
python:pandas合并csv文件的方法(图书数据集成)
Apr 12 Python
Tensorflow 模型转换 .pb convert to .lite实例
Feb 12 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
Feb 26 Python
python画图常规设置方式
Mar 05 Python
关于tf.matmul() 和tf.multiply() 的区别说明
Jun 18 Python
Python爬虫过程解析之多线程获取小米应用商店数据
Nov 14 Python
如何用Python编写一个电子考勤系统
Feb 08 Python
Python echarts实现数据可视化实例详解
Mar 03 Python
python小型的音频操作库mp3Play
Apr 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
PHP5 面向对象(学习记录)
2009/12/02 PHP
解决nginx不支持thinkphp中pathinfo的问题
2015/07/21 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
2016/01/07 PHP
PHP处理Ajax请求与Ajax跨域问题
2017/02/13 PHP
PHP Web表单生成器案例分析
2020/06/02 PHP
javascript 运算数的求值顺序
2011/08/23 Javascript
用表格输出1-1000之间的数字实现代码(附特效)
2013/04/21 Javascript
javascript面向对象之this关键词用法分析
2015/01/13 Javascript
浅谈Sizzle的“编译原理”
2015/04/14 Javascript
简单了解JavaScript操作XPath的一些基本方法
2016/06/03 Javascript
jquery.validate表单验证插件使用方法解析
2016/11/07 Javascript
jquery ui sortable拖拽后保存位置
2017/04/27 jQuery
微信小程序组件之srcoll-view的详解
2017/10/19 Javascript
微信小程序页面跳转功能之从列表的item项跳转到下一个页面的方法
2017/11/27 Javascript
浅谈React高阶组件
2018/03/28 Javascript
解决vue移动端适配问题
2018/12/12 Javascript
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
2019/03/01 Javascript
node使用request请求的方法
2019/12/20 Javascript
JS如何在不同平台实现多语言方式
2020/07/16 Javascript
uin-app+mockjs实现本地数据模拟
2020/08/26 Javascript
忘记ftp密码使用python ftplib库暴力破解密码的方法示例
2014/01/22 Python
python实现查找两个字符串中相同字符并输出的方法
2015/07/11 Python
在python中按照特定顺序访问字典的方法详解
2018/12/14 Python
解决Pycharm 中遇到Unresolved reference 'sklearn'的问题
2020/07/13 Python
掌上明珠Java程序员面试总结
2016/02/23 面试题
生物化学研究助理员求职信
2013/10/09 职场文书
2014年学习厉行节约反对浪费思想汇报
2014/09/10 职场文书
群众路线组织生活会发言材料
2014/10/17 职场文书
买房协议书范本
2014/10/23 职场文书
停电调休通知
2015/04/16 职场文书
小学安全工作总结2015
2015/05/18 职场文书
经费申请报告范文
2015/05/18 职场文书
2015年远程教育工作总结
2015/05/20 职场文书
会议简讯范文
2015/07/20 职场文书
民警忠诚教育心得体会
2016/01/23 职场文书
mysql数据库入门第一步之创建表
2021/05/14 MySQL