0

ビデオのフレームを保存したい。CvsaveImage()ビジュアルで使ってみましC++ 2010たが、次のフレームを別の名前で保存する方法がわからないため、多くのフレームを保存できません。そのため、古いフレームは次のフレームで上書きされます。

誰かが私が異なる名前で多くのフレームを保存するのを手伝ってくれる?

4

2 に答える 2

0

新しいファイルを保存するたびにインクリメントするフレーム番号や整数などのカウンターを使用します。このカウンターの値をファイル名の末尾に追加すると、カウンターがオーバーフローするまで (符号なし整数で 40 億フレームを超える) 一意のファイル名が取得されます。

static unsigned int counter = 0;
[...]
char pFileName[MAX_PATH] = {0};
sprintf(pFileName, "<YourFilePath>\\Frame_%u.jpg", counter++);
[...]
于 2013-03-14T21:17:59.030 に答える
0

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 );
于 2013-03-15T17:47:09.383 に答える