2011年7月7日木曜日

OpenCV VideoWriter

動画の保存のためのクラス。


VideoWriter vw(const string& filename, int fourcc, double fps, Size frameSize, bool isColor=true);
または、
vw.open(const string& filename, int fourcc, double fps, Size frameSize, bool isColor=true);
でファイルを開く。

その後、
vw.write(Mat &frame);
でファイルの書き込み。
終了は自動でしてくれる。



注意:
スレッドで繰り返し動画の保存をしようとしている時のこと。

ビデオの初期化部分でAVI用のライブラリを読み込む。
それがstaticな関数で読み込んでて、一度読み込むとフラグが立つ。
フラグもstatic。
そのため、次にファイルを開くときに、フラグが立っているため、ライブラリを読み込めない。
→ cap_vfw.cpp の static void icvInitCapture_VFW()

そこで、動画保存用にファイルを開く前にライブラリを読み込むことにした。

AVIFileInit();
VideoWriter(filename, CV_FOURCC_PROMPT, fps, size, true);
・・・

そして終了時に

AVIFileExit();

を追加。
これで繰り返し保存ができる。
追加のヘッダとライブラリは、下記ファイル。

#include <vfw.h>
vfw32.lib

0 件のコメント:

コメントを投稿