ビデオのフレームを保存したい。CvsaveImage()
ビジュアルで使ってみましC++ 2010
たが、次のフレームを別の名前で保存する方法がわからないため、多くのフレームを保存できません。そのため、古いフレームは次のフレームで上書きされます。
誰かが私が異なる名前で多くのフレームを保存するのを手伝ってくれる?
ビデオのフレームを保存したい。CvsaveImage()
ビジュアルで使ってみましC++ 2010
たが、次のフレームを別の名前で保存する方法がわからないため、多くのフレームを保存できません。そのため、古いフレームは次のフレームで上書きされます。
誰かが私が異なる名前で多くのフレームを保存するのを手伝ってくれる?
新しいファイルを保存するたびにインクリメントするフレーム番号や整数などのカウンターを使用します。このカウンターの値をファイル名の末尾に追加すると、カウンターがオーバーフローするまで (符号なし整数で 40 億フレームを超える) 一意のファイル名が取得されます。
static unsigned int counter = 0;
[...]
char pFileName[MAX_PATH] = {0};
sprintf(pFileName, "<YourFilePath>\\Frame_%u.jpg", counter++);
[...]
cvSaveImage()
を取りますがconst char* filename
、それは単にcvSaveImage
文字列を変更しないことを意味します; 変更できないわけではありません。
より簡単な場合は、 cvSaveImage を独自の関数でラップし、そこにファイル名を作成できます。
int my_cvSaveImage( const char* baseFilename, int frameNumber, const CvArr* image )
{
char filename[MAX_PATH] = {};
sprintf( filename, "%s-%d.jpg", baseFilename, frameNumber );
return cvSaveImage( filename, image );
}
次に、次のように呼び出します。
my_cvSaveImage( "file", 1, image );
//...
my_cvSaveImage( "file", 2, image );