1

OpenCVのビデオファイルのペアで各フレームを処理してから、結果のフレームを出力aviファイルに書き込もうとしています。出力ビデオファイルが奇妙に見えることを除いて、すべてが機能します。1つのソリッド画像の代わりに、画像が3回繰り返され、水平方向に圧縮されて、3つのコピーすべてがウィンドウに収まります。ライターが期待しているチャンネル数に問題があるのではないかと思いますが、8ビットのシングルチャンネル画像を書き込みます。以下は、ビデオライターを初期化するための設定です。

  //Initialize the video writer
  CvVideoWriter *writer = cvCreateVideoWriter("out.avi",CV_FOURCC('D','I','V','X'), 30, frame_sizeL, 0);

誰かが以前にopenCVビデオライターからのこの奇妙な出力に遭遇したことがありますか?結果のフレームをcvSaveImageでチェックして、処理ステップで「トリプル」イメージが作成されているかどうかを確認しましたが、そうではありません。画像が「3倍」になり、圧縮されるのは、cvWriteFrameを使用して出力aviに書き込む場合のみです。

編集:それで、これは書き込みフレームを使用して単一チャネルの画像を書き込もうとした場合にのみ発生することを発見しました。3チャンネルの8ビットRGB画像を書き込むと、出力ビデオは正常になります。なぜこれをしているのですか?CvVideoWriterを初期化するときに、色の引数に「0」を正しく渡しているので、単一チャネルの画像が必要です。

4

1 に答える 1

0

C++ バージョンでは、cv::VideoWriter に、最後のパラメーターを「false」に設定して単一チャンネルの画像を送信していることを伝える必要がありますが、これを実行していてよろしいですか?

編集: cvtColor()と CV_GRAY2RGBを使用して、グレースケール画像をカラーに変換することもできます

于 2010-06-24T17:22:55.540 に答える