2016-12-16 8 views
-2

作成したcos画像からビデオを作成しようとしましたが、生成されたaviビデオは空です。Python/Open CV:cos画像シーケンスからビデオを作成すると、ビデオは空になります

私はcv2.VideoWriter()を使用する必要があります。フレームは、作成されたビデオによって正しく表示され、0バイトです。あなたはこれを修正する方法を知っていますか?

私はaviビデオからフレームを取得したら、私は正常に新しい再生可能なビデオを作成します。

ありがとうございます!

私のコードは、私は解決策を見つけた

import cv2 
import math 
import numpy as np 

N=128 
Icos_1 = np.zeros((N,N)) 
Icos_2 = np.zeros((N,N)) 
for i in range(0,N): 
    for j in range(0,N): 
     myPi = 2*math.pi/N 
     th1 = 1*i + 3*j 
     th2 = 2*i + 4*j 
     Icos_1[i,j] = 255*(math.cos(myPi*th1)) 
     Icos_2[i,j] = 255*(math.cos(myPi*th2)) 
fourcc = cv2.VideoWriter_fourcc(*'XVID') 
out = cv2.VideoWriter('sample_video.avi',fourcc, 25.0, (128,128)) 

or x in range(1, 100): 
    if (x % 2) != 0: 
     frame = Icos_1 
    else: 
     frame = Icos_2 

    out.write(np.uint8(frame)) 
    cv2.imshow('frame',np.uint8(frame)) 
    if cv2.waitKey(1) & 0xFF == ord('q'): 
     break 

# Release video objects if job is finished 
out.release() 
+1

あなたが使用していない理由は、画面に表示するために 'np.uint8(フレーム)'を使用する場合'write(np.uint8(frame))' – furas

+0

また、適切なコーデックをインストールしていないか、ビデオを書き込むためにサポートしたいコーデックがないかもしれません。どのオペレーティングシステムを使用していますか? XVIDの代わりにMPEG-4を使ってみましたか? – rayryeng

+0

@furas動作しませんでした!それでも同じ結果。他のアイデア? – zinon

答えて

0

です!

は私がout = cv2.VideoWriter('sample_video.avi',0, 25.0, (128,128))

完全なコードにコーデックとして0を使用する必要がある。

import cv2 
import math 
import numpy as np 

N=128 
Icos_1 = np.zeros((N,N)) 
Icos_2 = np.zeros((N,N)) 
for i in range(0,N): 
    for j in range(0,N): 
     myPi = 2*math.pi/N 
     th1 = 1*i + 3*j 
     th2 = 2*i + 4*j 
     Icos_1[i,j] = 255*(math.cos(myPi*th1)) 
     Icos_2[i,j] = 255*(math.cos(myPi*th2)) 

out = cv2.VideoWriter('sample_video.avi',0, 25.0, (128,128)) 

or x in range(1, 100): 
    if (x % 2) != 0: 
     frame = Icos_1 
    else: 
     frame = Icos_2 

    out.write(np.uint8(frame)) 
    cv2.imshow('frame',np.uint8(frame)) 
    if cv2.waitKey(1) & 0xFF == ord('q'): 
     break 

# Release video objects if job is finished 
out.release() 
+0

0は、システムにインストールされているコーデックを選択できるウィンドウを表示します。あなたの問題に対する実際の解決策は、適切なコーデックを選択したことです。実際に選択したコーデックを知らせるためにあなたの投稿を更新してください。 – rayryeng

+0

@rayryengコーデックに0を持つ 'cv2.VideoWriter()'を実行すると、実際にプログラムが正常に動作します。フレームレートに '0 'を設定すると、プログラムはウィンドウをポップアップします。しかし、ここで私はフレームレート= 25.0fpsだから私のプログラムは働いている。 – zinon

関連する問題