preface

最近在做 video caption 相关,要处理大量视频。

method 1

方法 1 是最简单的,用 ffmpeg工具来完成。

具体的网上有很多这方面的资料,本人只是简单了解了一下如何使用。如下图,有一个名为 ffmpeg_test.avi的视频:

在当前目录打开终端,输入如下命令:

$ffmpeg -i ffmpeg_test.avi frames_%03d.jpg -hide_banner

以上我没有指定太多的参数,实际上有很多参数可以指定,如起止的时间,几秒钟取一帧等等。

输入即可获得每一帧。

method 2

下面就是可以用 cv2 模块中的 videocapture、videowriter 来提取了,具体代码如下:

#! encoding: utf-8

import os

import cv2

import cv

videos_src_path = '/home/ou-lc/chenxp/downloads/youtube/youtube_select'

videos_save_path = '/home/ou-lc/chenxp/downloads/youtube/youtube_frames'

videos = os.listdir(videos_src_path)

videos = filter(lambda x: x.endswith('avi'), videos)

for each_video in videos:

print each_video

# get the name of each video, and make the directory to save frames

each_video_name, _ = each_video.split('.')

os.mkdir(videos_save_path + '/' + each_video_name)

each_video_save_full_path = os.path.join(videos_save_path, each_video_name) + '/'

# get the full path of each video, which will open the video tp extract frames

each_video_full_path = os.path.join(videos_src_path, each_video)

cap = cv2.videocapture(each_video_full_path)

frame_count = 1

success = true

while(success):

success, frame = cap.read()

print 'read a new frame: ', success

params = []

params.append(cv.cv_imwrite_pxm_binary)

params.append(1)

cv2.imwrite(each_video_save_full_path + each_video_name + "_%d.ppm" % frame_count, frame, params)

frame_count = frame_count + 1

cap.release()

在最后,我将每一帧保存为 ppm 格式。因为我需要调用之前的 optical flow 论文中的 of 程序,来提取 optical flow image(光流图)。

保存时,根据 opencv 的 doc:opencv 2.4.9 cv2.imwrite,其参数的指定方式如上。一开始在这里跌了好几个跟头,因为不知道如何将参数正确的指定。

reference

http://stackoverflow.com/questions/33311153/python-extracting-and-saving-video-frames

http://stackoverflow.com/questions/12216333/opencv-imread-imwrite-increases-the-size-of-png

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

python提取视频帧并保存_python tools实现视频的每一帧提取并保存相关推荐

  1. python裁剪图片并保存_python – 如何从图像中剪切轮廓并将其保存到新文件中

    大家好,这是我的第一个问题所以请保持温和.我有一个计算机视觉领域的项目,我是新的,我会很感激一些帮助.我有一个pcb的图像,我的(首先)任务是从背景中切断电路板并将其保存到新文件. 如果结果只是没有灰 ...

  2. python下载图片并保存_Python从URL获取图片、读取图片格式并保存到本地

    前言 从网络上下载图片的时候,我们不一定能从URL中获取图片格式. 所以,从图片本身获取图片格式,是比较通用而且方便的方法了. 但是,PIL一般都是从文件读取图片数据,那么如何从requests.co ...

  3. python获取视频帧的时间_Python提取视频中图片的示例(按帧、按秒)

    一.按帧提取 #coding=utf-8 import os import cv2 def save_img(): #提取视频中图片 按照每帧提取 video_path = r'D:\\test\\' ...

  4. python 视频处理技术_Python玩转视频处理(三):从视频中提取女神片段

    在上一篇中实现了基于人脸识别提取人物片段的功能,但是在实践过程中发现,如果是一部电影,那么提取到的片段太多了.为了找女神的电影片段,还要在辣么多剪辑中苦苦手工筛选,这个不是一个优秀的程序员应该做的. ...

  5. python截取视频图像_python工具-将视频按帧截取图片(附代码)

    描述:将一个视频流按帧数截取大量的图片 用途:ai的数据集制作,得到大量的图片,之后将其打标签 更改的地方 1.default--间隔的帧数   2.input/output--输入视频的路径.存放截 ...

  6. python编程教程第九讲_Python入门学习视频,最全面讲解视频无偿分享,这些基础知识你都懂了吗?...

    2020最新Python零基础到精通资料教材,干货分享,新基础Python教材,看这里,这里有你想要的所有资源哦,最强笔记,教你怎么入门提升!让你对自己更加有信心,重点是资料都是免费的,免费!!! 如 ...

  7. python发朋友圈源码_Python 带你一键生成朋友圈超火的九宫格短视频

    1. 场景 如果你经常刷抖音和微信朋友圈,一定发现了最近九宫格短视频很火! ​从朋友圈九宫格图片,到九宫格视频,相比传统的图片视频,前者似乎更有个性和逼格 除了传统的剪辑软件可以实现,是否有其他更加快 ...

  8. python更改图片中物体的颜色_Python Opencv提取图片中某种颜色组成的图形的方法...

    Python Opencv提取图片中某种颜色组成的图形的方法 主要目标识别图中红色的裂缝,尝试了几种不同的方法,最后发现比较每一点的RGB差值可以很好的解决这个问题,也就是提取图片中的红色相关信息.处 ...

  9. python怎么实现音乐快进_Python 超简单3行代码提取音乐高潮(附批量提取)

    有些时候,为了设定手机铃声或者发抖音视频,我们会耗费大量时间在剪辑音乐高潮部分上.那么这个音乐高潮的提取能不能自动化呢?当然可以. 先来听听效果,孤芳自赏提取高潮后的部分: 怎么样,是不是迫不及待想往 ...

最新文章

  1. C#中TextBox只能输入数字的代码
  2. 位运算,处理前台多选值
  3. dataframe输出某列的数据以及统计某列的取值种数+输出某行数据
  4. ExtJS入门(08)窗口,按钮,输入框,
  5. 「OC」类的深入研究、description方法和sel
  6. Windows的特色
  7. ogg sqlserver mysql_ogg 报错,求大神解决方法
  8. 什么是java cdm_Java-ORM数据库框架CDM介绍
  9. clientHeight、offsetHeight、innerHeight、ouerHeight 区别
  10. 家政上门预约服务小程序源码+前端后端
  11. 个别网站打不开,但是别人能打开,手机能打开
  12. hololens拍照
  13. Promise 基本使用详解
  14. SEER数据库中肿瘤发病率计算并绘制发病率趋势图
  15. 蓝桥杯单片机学习3——数码管静态显示
  16. 光猫、路由器和交换机区别
  17. 可控硅过零导通程序--可控硅驱动程序
  18. Final Cut Pro X for Mac(FCPX专业视频剪辑软件) v10.4.6中文特别版
  19. Scrapy-Redis 爬取快代理免费
  20. 浏览器中H5存储方式的横向对比

热门文章

  1. cvc降噪和主动降噪_小米降噪项圈蓝牙耳机来了:Hybrid主动降噪技术
  2. asf linux教程,ASF V3.0 windows/linux含树莓派部署流程
  3. 学python必会英语单词_Python必备常用英语词汇(一)
  4. 数据结构之查找算法:散列查找
  5. 使用和了解Valgrind核心:高级主题
  6. 1003. 检查替换后的词是否有效
  7. 应用netstat查看目标机TCP连接的状况
  8. 常见的爬虫分析库(1)-Python3中Urllib库基本使用
  9. JavaScript代码规范和性能整理
  10. android jni与java之间数据传输时怎么转换