2016-07-07 7 views
1

ボタンを押したときにビデオライターオブジェクトを使用してOpenCVビデオストリームを保存しようとしていますが、5.5kbのファイルしか保存しません。python opencvはVideo-writerオブジェクトを使ってビデオを書きませんか?

def OnRecord(self, evt): 
    capture = cv2.VideoCapture(0) 
    if not(capture.isOpened()): 
     print "Error" 
    # video recorder 
    fourcc = cv2.cv.CV_FOURCC(*'XVID') 
    video_writer = cv2.VideoWriter.open("output.avi", fourcc, 20, (640, 480), True) 

    # record video 
    while (capture.isOpened()): 
     ret, frame = capture.read() 
     if ret==True: 
      video_writer.write(frame) 
      cv2.imshow('Video', frame) 
     else: 
      break 

def OnCancel(self, evt): 
    capture.release() 
    video_writer.release() 
    cv2.destroyAllWindows() 

何が問題なのですか?

注 - 私はRaspberry-piを使用しています。

答えて

0

video_writer = cv2.VideoWriter.open("output.avi", fourcc, 20, (640, 480),True)

私にエラーを与えます。私は

video_writer = cv2.VideoWriter("output.avi", fourcc, 20, (640, 480), True)

を試してみましたが、それが動作します。

またreleasecapturevideo_writercapture.release()video_writer.release()を使用してください。

cv2.imshow('Video', frame)はこのようには機能しません。それを動作させるには、その後にcv2.waitKey(1)を追加する必要があります。

EDIT:多分

それはあなたのデバイスドライバに問題があります。 hereの指示に従ってください。正常に動作します。

+0

'DEF OnRecord(自己、EVT):それは私は上記のコードを試みた' '' プリント "エラー":(()capture.isOpenedない)場合、 '' 捕捉= cv2.VideoCapture(0) '' "Error"という文字が表示されるLoopに問題がある可能性があります。間違っていれば私を修正してください私はあなたのことを試し、あなたにできるだけ早く知らせるでしょう。ありがとうございます@ shiva – SivamNatesan

+0

この 'if'文は上記のコードにはありません、あなたは正確なコードを投稿できますか? – shiva

+0

私は質問を編集しました、混乱のために申し訳ありません。 @shiva – SivamNatesan

関連する問題