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函数中的默认参数
Mar 30 Python
举例讲解Python的Tornado框架实现数据可视化的教程
May 02 Python
django 2.0更新的10条注意事项总结
Jan 05 Python
Python读取word文本操作详解
Jan 22 Python
Python编程实现从字典中提取子集的方法分析
Feb 09 Python
Python爬虫包BeautifulSoup异常处理(二)
Jun 17 Python
django多个APP的urls设置方法(views重复问题解决)
Jul 19 Python
Django CBV类的用法详解
Jul 26 Python
Python学习笔记之集合的概念和简单使用示例
Aug 22 Python
pygame实现成语填空游戏
Oct 29 Python
python接口自动化如何封装获取常量的类
Dec 24 Python
解决django框架model中外键不落实到数据库问题
May 20 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 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
2013/06/25 PHP
php简单图像创建入门实例
2015/06/10 PHP
PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
2015/12/25 PHP
Aster vs Newbee BO5 第三场2.19
2021/03/10 DOTA
Javascript面向对象之四 继承
2011/02/08 Javascript
快速解决FusionCharts联动的中文乱码问题
2013/12/04 Javascript
通过onmouseover选项卡实现img图片的变化
2014/02/12 Javascript
jQuery判断对象是否存在的方法
2015/02/05 Javascript
JS+DIV+CSS排版布局实现美观的选项卡效果
2015/10/10 Javascript
基于JavaScript实现熔岩灯效果导航菜单
2017/01/04 Javascript
JavaScript中的FileReader图片预览上传功能实现代码
2017/07/24 Javascript
webpack v4 从dev到prd的方法
2018/04/02 Javascript
JS字符串补全方法padStart()和padEnd()
2020/05/27 Javascript
JS猜数字游戏实例讲解
2020/06/30 Javascript
Vue实现鼠标经过文字显示悬浮框效果的示例代码
2020/10/14 Javascript
[01:46]新英雄登场
2019/09/10 DOTA
[01:02:09]Liquid vs TNC 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21
2020/07/19 DOTA
python装饰器使用方法实例
2013/11/21 Python
Python 正则表达式实现计算器功能
2017/04/29 Python
tensorflow实现图像的裁剪和填充方法
2018/07/27 Python
python的debug实用工具 pdb详解
2019/07/12 Python
Django如何实现网站注册用户邮箱验证功能
2019/08/14 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
2019/08/23 Python
使用Python实现将多表分批次从数据库导出到Excel
2020/05/15 Python
python如何求圆的面积
2020/07/01 Python
日本面向世界,国际级的免税在线购物商城:DOKODEMO
2017/02/01 全球购物
Rakuten Kobo台湾:电子书、eReaders和Reading应用程式
2017/11/24 全球购物
平面设计自荐信
2013/10/07 职场文书
公司员工检讨书
2014/02/08 职场文书
化妆师职业生涯规划书
2014/02/16 职场文书
《荷花》教学反思
2014/04/16 职场文书
2014年社团工作总结范文
2014/11/27 职场文书
2014年学校体育工作总结
2014/12/08 职场文书
2015年学生会纪检部工作总结
2015/03/31 职场文书
Vue的生命周期一起来看看
2022/02/24 Vue.js
Springboot-cli 开发脚手架,权限认证,附demo演示
2022/04/28 Java/Android