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 网络编程起步(Socket发送消息)
Sep 06 Python
python实现计算倒数的方法
Jul 11 Python
Python开发的实用计算器完整实例
May 10 Python
Python实现读取json文件到excel表
Nov 18 Python
python购物车程序简单代码
Apr 18 Python
谈谈Python中的while循环语句
Mar 10 Python
解决python中使用PYQT时中文乱码问题
Jun 17 Python
django 数据库连接模块解析及简单长连接改造方法
Aug 29 Python
Django自带日志 settings.py文件配置方法
Aug 30 Python
python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)
Mar 12 Python
pycharm配置安装autopep8自动规范代码的实现
Mar 02 Python
Python中time标准库的使用教程
Apr 13 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在程序中将网页生成word文档并提供下载的代码
2012/10/09 PHP
PHP+MYSQL实现用户的增删改查
2015/03/24 PHP
php实现编辑和保存文件的方法
2015/07/20 PHP
Zend Framework+smarty用法实例详解
2016/03/19 PHP
php实现xml转换数组的方法示例
2017/02/03 PHP
一些技巧性实用js代码小结
2009/10/14 Javascript
仅img元素创建后不添加到文档中会执行onload事件的解决方法
2011/07/31 Javascript
Javascript 异步加载详解(浏览器在javascript的加载方式)
2012/05/20 Javascript
js+css实现的简单易用兼容好的分页
2013/12/30 Javascript
javascript的解析执行顺序在各个浏览器中的不同
2014/03/17 Javascript
JS运动相关知识点小结(附弹性运动示例)
2016/01/08 Javascript
js处理层级数据结构的方法小结
2017/01/17 Javascript
vue轮播图插件vue-concise-slider的使用
2018/03/13 Javascript
支付宝小程序tabbar底部导航
2018/11/06 Javascript
node实现socket链接与GPRS进行通信的方法
2019/05/20 Javascript
[08:54]《一刀刀一天》之DOTA全时刻18:十九支奔赴西雅图队伍全部出炉
2014/06/04 DOTA
[03:51]吞吞映像 每周精彩击杀top10第二弹
2014/06/25 DOTA
[36:05]完美世界DOTA2联赛循环赛 Forest vs DM 第一场 11.06
2020/11/06 DOTA
Python3指定路径寻找符合匹配模式文件
2015/05/22 Python
Python3访问并下载网页内容的方法
2015/07/28 Python
使用python将大量数据导出到Excel中的小技巧分享
2018/06/14 Python
详解Django模版中加载静态文件配置方法
2019/07/21 Python
微信小程序python用户认证的实现
2019/07/29 Python
Python的bit_length函数来二进制的位数方法
2019/08/27 Python
Python中socket网络通信是干嘛的
2020/05/27 Python
CSS3 transforms应用于背景图像的解决方法
2019/04/16 HTML / CSS
美国内衣品牌:Leonisa
2016/08/14 全球购物
大学生毕业求职简历的自我评价
2013/10/24 职场文书
应聘美工求职信
2013/11/07 职场文书
安全教育心得体会
2013/12/29 职场文书
教师个人剖析材料
2014/02/05 职场文书
有创意的广告词
2014/03/18 职场文书
医药销售自我评价200字
2014/09/11 职场文书
小学生运动会报道稿
2014/09/12 职场文书
2015年安全生产目标责任书
2015/01/29 职场文书
2019年销售人员的职业生涯规划书
2019/03/25 职场文书