2012-03-20 14 views
13

画像ファイル(JPEGなど)のディレクトリをPythonの動画ファイル(MOV、MP4、AVI)に連結する方法を探しています。理想的には、これにより、そのディレクトリから複数のJPEGを取得し、ムービーファイルの1つのフレームであるグリッドに「貼り付ける」こともできます。これを実現するモジュールはどれですか?Python JPEG to movie

+1

libavfiltersで構築された 'ffmpeg'はこれを簡単に行うことができるはずです – wim

+0

mencoderはサブプロセスを使って呼び出すのも簡単です。これはchronolapseがあなたが求めているのと全く同じです(画像からムービー、 )。 PILを使用して複合グリッドイメージを作成してから、それらを同じ方法でムービーにコンパイルすることができます。 –

答えて

7

Python interface of OpenCVを使用することができます。特にVideoWriterを使用してください。私は、ドキュメントの理解何から、次はあなたがやりたいことになります。

w = cvCreateVideoWriter(filename, -1, <your framerate>, 
         <your frame size>, is_color=1) 

と、ループで、ファイルごとに:私はこのコードを試していない

cvWriteFrame(w, frame) 

ますが、私はその考えが正しいと思う。それが動作するか教えてください。

+0

VideoWriterリファレンスへのハイパーリンクを壊しました。サードパーティの代わりにopenCVソースに行くかもしれません。 – EngrStudent

+0

@EngrStudentご報告いただきありがとうございます。一定。 – agravier

1

ここでは、1つのビデオからフレームを取り出し、それらを修正して(そのコードを取り出した)、別のビデオに書き込んだスクリプトのカットダウン版です。多分それは助けになるでしょう。

import cv2 

fourcc = cv2.cv.CV_FOURCC(*'XVID') 
out = cv2.VideoWriter('out_video.avi', fourcc, 24, (704, 240)) 

c = cv2.VideoCapture('in_video.avi') 

while(1): 
    _, f = c.read() 
    if f is None: 
    break 

    f2 = f.copy() #make copy of the frame 
    #do a bunch of stuff (missing) 

    out.write(f2) #write frame to the output video 

out.release() 
cv2.destroyAllWindows() 
c.release() 

イメージがたくさんある場合は、イメージをループして読み込み、イメージを別のイメージに書き込んでください。

0

実際には、ソリューションはPythonを使用して、映画ファイルを生成する必要がありますか?あるいは、ソリューションがどのように見えるかをこれらのあなたの期待ですか?

ムービーとしてたくさんのjpegファイルを再生したい場合は、pythonを使用せずに、またはvidmyfigs.comにアクセスして.avi/.mov/mp4ファイルを使用してコンピュータを乱雑にすることができます。マウスを使用してハードドライブから画像ファイルを選択します。 「映画」はWebブラウザで再生されます。