2017-05-19 3 views
1

私は、ビデオにまとめて、背景減算を適用して出力を保存する必要がある画像の名前を含む入力テキストファイルを持っています。バックグラウンドを減算したビデオを保存できませんPython openCV

# convert images to video 
f = open('files_harsha.txt','r+') 
fourcc = cv2.VideoWriter_fourcc(*'DIVX') 
out = cv2.VideoWriter('harsha_output.avi',fourcc, 10.0, (1344,1024)) 
for line in f: 
    frame=cv2.imread(line.strip()) 
    out.write(frame) 
# cv2.imshow('1',frame) 
# cv2.waitKey(0) 

out.release() 

上記のスニペットは、ビデオを保存、正常に動作します:

は、私はこれを試してみました。それから私は、バックグラウンド減算を実行し、以下に示すように、出力を保存しよう:

capture = cv2.VideoCapture('harsha_output.avi') 
size = (int(capture.get(cv2.CAP_PROP_FRAME_WIDTH)), 
int(capture.get(cv2.CAP_PROP_FRAME_HEIGHT))) 
fourcc = cv2.VideoWriter_fourcc(*'DIVX') 
video = cv2.VideoWriter('harsha_subtractor.avi', fourcc, 10.0,size) 
fgbg= cv2.createBackgroundSubtractorMOG2(varThreshold=50,history=4) 

while (1): 
    ret, img = capture.read() 
    if ret==True: 
     fgmask = fgbg.apply(img) 
     video.write(fgmask) 
     #cv2.imshow('forehead',fgmask) 

    else: 
     capture.release() 
     video.release() 
     break 

    k = cv2.waitKey(30) & 0xff 
    if k == 27: 
     break 

cv2.destroyAllWindows() 

私は、バックグラウンドを差し引いたビデオを見ることができていますが、私は、ファイルを保存することができません。なぜ私はこの問題を抱えていますか?

私はアナコンダIDE(スパイダー)内のPython 2.7を使用していますが、念のためにOpenCVの3.xの

+0

エラーが表示されますか?空のビデオファイルですか? –

+0

@EliezerBernart私は空白のビデオを取得しています –

+1

素晴らしい!ファイルに書き込む前にイメージを正規化しようとしましたか?そのために 'cv2.convertScaleAbs'を使うことができます。 多分、別のものかもしれません。あなたの出力ビデオのファイルサイズは? –

答えて

0

を使用しています。 dan-mašekで示唆されるように、fgmaskは1チャネルの画像であるため、VideoWriterは次のように表示されません。error: (-215) scn==2 & (scn == 3 || scn == 4)isColor=False引数をVideoWriterに渡して解決しました。

関連する問題