我想保存我的视频的一些帧。我尝试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()
需要 a 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 );