4

PythonとOpenCVを使用してWindowsXPでプログラムを作成しています。このプログラムは、Webカメラからキャプチャした画像フレームをビデオ(.avi)に追加しますが、特定の条件が満たされた場合に限ります。テストの目的で、この条件は時間ベースですが、これは変更されます。唯一の問題は、私のプログラムが何も出力しないことです。すべて正常に動作しているように見えますが、出力するはずの.aviファイルを確認しても何もありません。

これが私のコードです。私のスタイルは少し型破りだと言われていますが、うまくいけば、私が何をしているのかがわかるでしょう。前もって感謝します。

import cv, time ##Import modules
cv.NamedWindow("Experiment", cv.CV_WINDOW_AUTOSIZE)                         ##Open window
camera_index = 1
capture = cv.CaptureFromCAM(camera_index)
x = time.clock()+5

try:
    while 1:
        if time.clock() < x:                                                ##Clock to capture 5 seconds of footage
            frame = cv.QueryFrame(capture)                                  ##Capture webcam frame
            cv.ShowImage("Experiment", frame)                               ##Display image
            writer = cv.CreateVideoWriter("C:\/test.avi", cv.CV_FOURCC('F', 'M', 'P', '4'),
                                          24, (640, 480), 1)                ##Write video file (codec = MPEG-4 - .avi)
            if writer:                                                      ##Write frame to file
                cv.WriteFrame(writer, frame)
            if not writer:                                                  ##Failure to register video writer
                print "Error: Video writer malfunction"
                sys.exit(1)
                cv.DestroyWindow("Experiment")
                break
        else:
            if writer:
                print "Video capture succeeded"
                cv.DestroyWindow("Experiment")
                camera_index += 1
                capture = cv.CaptureFromCAM(-1)
                break
        c = cv.WaitKey(10)
        if(c=="n"):
            camera_index += 1
            capture = cv.CaptureFromCAM(-1)
except:
    print "Video capture failed"                                            ##Total systems failure escape routine!!!
    cv.DestroyWindow("Experiment")

- 編集 -

12行目を「-1」に変更cv.CV_FOURCC('F', 'M', 'P', '4')すると動画が出力されますが、0バイトです。

4

0 に答える 0