質問: OpenCVでの録画についてです。 Raspberry Pi2 + OpenCV + Webカメラで録画プログラムを作成したのですが、動画がうまくとれません...。 おそらくコーデックの問題なのですが、コーデックに関して詳しくないのでここで質問させていただきました。 以下がVideoWriter関数の引数です。 cvCreateVideoWriter("test.avi", CV_FOURCC('X', 'V', 'I', 'D'), fps, cvSize(w, h), 1); サイズを640*480で指定してプログラムをはしらせると、しかっり録画するのですが、解像度を落とすと動画が作成されません。(解像度640*480以上なら録画されます。) 環境は、 ・Raspberry Pi2 (Raspbian) ・Webカメラ:BSWHD06M(http://buffalo.jp/product/multimedia/web-camera/bswhd06m/) 画像処理や映像は初心者なので詳しく教えていただけると助かります。お願いします。
回答: とれない、録画できないという現象が具体的にどうなのかが掴めませんが、 「動画ファイルのサイズが時間に比例して大きくならない」という体で話します。 キャプチャはおそらく出来ているのでしょう。 可能性の一つとして、 デバイスが指定された解像度に対応していない為、 デバイスがそれに近い解像度に自動で設定したが、 得られた画像の解像度がVideoWriterで指定した解像度と違うため変になっているのではないでしょうか。 ``` VideoCapture cap; ...略 cap.set(CV_CAP_PROP_FRAME_WIDTH, 640); cap.set(CV_CAP_PROP_FRAME_HEIGHT, 480); Size sz(cap.get(CV_CAP_PROP_FRAME_WIDTH),cap.get(CV_CAP_PROP_FRAME_HEIGHT)); ``` 等として、このszを使うと良いのではないでしょうか。 つまり、VideoWriterには画像データと同じ解像度を指定しなければならない、ということです。