2011-11-14 11 views
0

OpenCV(C++)を使用してビデオファイルを書きたいと思っていました。ドキュメントを見ると、それは本当に簡単なようでした。しかし、私のプログラム(Windows 7で動作している)で試してみると、できませんでした。OpenCVでビデオを記録できませんが、エラーはありません

潜在的な問題についてインターネット上で検索すると、2.x OpenCVインターフェイスを使用した例や自分の問題に関連する例が見つかりませんでした。

cv::VideoCapture cap("C:\\Users\\Me\\Video\\test.mov"); 

cv::VideoWriter writer("C:\\Users\\Me\\Video\\test_result.mov", 
          cap.get(CV_CAP_PROP_FOURCC), 
          cap.get(CV_CAP_PROP_FPS), 
          cv::Size((int)cap.get(CV_CAP_PROP_FRAME_HEIGHT), (int)cap.get(CV_CAP_PROP_FRAME_WIDTH))); 

while(cap.grab()) { 
    cv::Mat img; 
    cap.retrieve(img); 

    // process img 

    writer << img; 
} 

エラーメッセージが指定されていないが、ビデオファイルが作成されていません。

まず、ここのコードです。さらに悪いことに、コンソールに次のメッセージが表示されます。

Output #0, mov, to 'C:\Users\Me\Video\teste_result.mov': 
Stream #0.0: Video: [0][0][0][0]/0x0000, yuv420p, 480x720, q=2-31, 22118 kb/s, 90k tbn, 15 tbc 

ビデオファイルが作成されていてはなりませんか?考えられるエラーをどこで見つけることができますか?

EDIT:VideoCaptureとVideoWriterがOKになりisOpened方法、持つオブジェクト場合

上記のコードを使用して、私も確認してください。

答えて

1

FOURCC、FPS、およびフレームサイズフィールドを手動で設定しましたか?このような

何か:

cv::VideoWriter writer("C:\\Users\\Me\\Video\\test_result.mov", 
         CV_FOURCC('M','J','P','G'), 
         30, 
         Size(720, 480), 
         true); 

は、その出力は何もしていますか? get(CV_*)が有効なデータを返さないことがあります。おそらく、正しい情報が返されていることを確認する必要があります。

EDIT:また、(高さ、幅)タプルでサイズオブジェクトを作成していることに気付きました。 CvSizeコンストラクタの予想される順序であるため、これを(幅、高さ)にスワップする必要があります。

0

エラーメッセージはを与えられていないが、あなたはVideoCaptureVideoWriterの成功をチェックしていないもあるさ:

cv::VideoCapture cap("C:\\Users\\Me\\Video\\test.mov"); 
if (!cap.isOpened()) // check if we succeeded 
{ 
    // print error message 
} 


cv::VideoWriter writer("C:\\Users\\Me\\Video\\test_result.mov", 
          cap.get(CV_CAP_PROP_FOURCC), 
          cap.get(CV_CAP_PROP_FPS), 
          cv::Size((int)cap.get(CV_CAP_PROP_FRAME_HEIGHT), (int)cap.get(CV_CAP_PROP_FRAME_WIDTH))); 

if (!writer.isOpened()) // check if we succeeded 
{ 
    // print error message 
} 

これらのチェックを行うと、あなたはなぜ失敗し、何についての詳細な情報を持っています。

+0

申し訳ありません、それを忘れてしまいましたが、私のコードでそれを行いました。ちょうど質問を編集しました。 – Renan

関連する問題