【问题标题】:Problems converting video to pictures using python 2.7使用 python 2.7 将视频转换为图片的问题
【发布时间】:2012-02-12 14:40:57
【问题描述】:

尝试了很多选项,但我的想法已经不多了。我希望这里有人可以提供帮助。我正在尝试在 python 中编写一些代码,这些代码将从视频(.avi 或 .wmv)中提取帧(例如每十帧)并创建图片(最好是 .jpg - 但其他格式也可以)。我没有成功,想知道是否有人可以通过提供替代我尝试和失败的方法来帮助我解决我的问题。

我已经尝试过 PyMedia(他们的教程 http://pymedia.org/tut/src/dump_video.py.html 中的示例不起作用 - 程序在查找视频编解码器时会崩溃):

#dm= muxer.Demuxer( inFile.split( '.' )[ -1 ] )  This line does not work

  dm= muxer.Demuxer( 'avi' )  #This modified line does seem to work however

  i= 1

  inFile = "VideoTest.avi"

  f= open( inFile, 'rb' )

  s= f.read( 400000 )

  r= dm.parse( s )

  v= filter( lambda x: x[ 'type' ]== muxer.CODEC_TYPE_VIDEO, dm.streams )

  v_id= v[ 0 ][ 'index' ]

  print 'Assume video stream at %d index: ' % v_id

  c= vcodec.Decoder( dm.streams[ v_id ] )     #this is the point where it crashes.

我已经尝试过适用于 Python 的 OpenCV v2.2,但这也不起作用(我可以让大部分 OpenCV 工作 - 除了我需要的一个函数 CaptureFromFile 不起作用)。我相信这个功能不起作用的原因是因为在 Windows 上它需要 highGui 才能运行,并且由于某种原因,python 和 opencv 无法找到 highgui,即使它位于正确的目录中。我也了解 OpenCV 在查找和应用正确的视频编解码器方面存在问题,所以我不确定是哪一个是我的问题的原因。

我查看了 pyFFMPEG,但最后一个版本是 2.6 版,我正在运行 python 2.7。

我在 Windows Vista 和 Windows 7 机器上运行它,在 C:\ 上加载了 Python 2.7 和 OpenCV 2.2,并且在 C:\python27\Libs\site 中安装了所有其他 python 包(pygames、pymedia、numpy、scipy) -packages...”我从可执行文件下载并安装,所有包都是为 python 2.7 构建的。我的 Path 变量包括 Python27 和 OpenCV,我有一个 PYTHONPATH 变量。

感谢您的任何想法或建议。

【问题讨论】:

    标签: opencv python-2.7 pyffmpeg


    【解决方案1】:

    我尝试了以下方法将每个帧提取为单独的图像:

    import cv2
    
    file_path = "some\path\to\the\file.avi"
    video_object = cv2.VideoCapture(path)
    
    success = True
    while success:
        success,frame = video_object.read()
        if success:
            cv2.imwrite(path[:-4]+"_"+str(i)+".jpg",frame)
    print("Done!")
    

    此脚本将每个帧作为图像保存在与源文件相同的文件夹中。这可能不是最有效的方法,但它对我有用!我知道我的字符串解析不是最推荐的,但它确实有效。 video_object.read() 返回两个对象。第一个是bool,表示读取操作是否成功,第二个是图片。

    视频编解码器可能存在一些限制,我不知道。截至 2013 年 11 月 7 日,我正在使用 Python 2.7 和最新版本的 openCV 和 Numpy。

    【讨论】:

      猜你喜欢
      • 2019-11-02
      • 1970-01-01
      • 1970-01-01
      • 2016-01-31
      • 1970-01-01
      • 2020-02-17
      • 2020-05-22
      • 2014-03-02
      • 1970-01-01
      相关资源
      最近更新 更多