2012-01-17 5 views
1

多くのオプションを試してみてアイディアが不足しています。ここの誰かが助けてくれることを願っていました。私は、ビデオ(.aviまたは.wmv)からフレーム(10番目のフレームごと)を抽出し、ピクチャを作成するPythonでコードを書き込もうとしています(.jpgが好きですが、他のフォーマットも可能です)。私は成功しなかったし、私が試したものと失敗したものの代替案を提供することで、誰かが私の問題を解決するのを助けることができるかどうか疑問に思っていました。pythonを使用してビデオをピクチャに変換する際の問題2.7

私は(彼らのチュートリアル http://pymedia.org/tut/src/dump_video.py.htmlの例では動作しません - プログラムの爆弾を出し、それはビデオコーデックを探したときに)PyMediaを試してみました

#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マシンで実行しており、Python 2.7とOpenCV 2.2をC:\とC:\ python27 \ Libs \にインストールされている他のすべてのpythonパッケージ(pygames、pymedia、numpy、scipy)サイトのパッケージは...」私はすべてのパッケージはPython 2.7用に構築された、実行ファイルからダウンロードしてインストール。私のPath変数がPython27とOpenCVのを含んでいると私はPYTHONPATH変数を持っている。任意のアイデアや提案のための

感謝。

答えて

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()は2つのオブジェクトを返します。最初は、読み取り操作が成功したかどうかを示すboolであり、2番目は画像です。

私が気付いていないビデオコーデックに関しては制限があるかもしれません。私は、Python 2.7を、最新のバージョンのopenCVとNumpyを使用しています(2011年11月7日現在)。

関連する問題