我必须以5秒的间隔保存图像形式的网络摄像头,我试过循环但它无法正常工作..我该怎么办?任何计时器???
if(i==0)
{
cvSaveImage("crop.jpg",tmp);
cvShowImage( "crop", tmp);
i++;
//printf("%d",i);
}
else
{
i++;
if(i==1000)
{
cvSaveImage("crop1.jpg",tmp);
cvShowImage("crop1",tmp);
//printf("%d",i);
}
if(i==2000)
i=0;
}
答案 0 :(得分:1)
使用正确的睡眠功能,而不是用循环来攻击某些东西。正确使用的功能可能取决于您的操作系统,但在Windows上您可以使用Sleep,如Joachim Pileborg建议的那样:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms686298(v=vs.85).aspx
答案 1 :(得分:0)
你可以使用时钟。这是一个例子:
http://www.cplusplus.com/forum/beginner/76147/#msg408731
.NET框架上实际上有一个Timer类。
http://msdn.microsoft.com/en-us/library/system.timers.timer(v=vs.71).aspx
答案 2 :(得分:0)
我会像Raul一样去做,用一个时钟检查自上次保存图像以来的时间。有很多方面你可以这样做,但我 将尝试使用clock来说明这个概念的一个例子:
timePassed = (clock() - lastTime) / CLOCKS_PER_SEC;
bool takeNewPicture = timePassed >= minTimeBetweenShots;
if(takeNewPicture)
{
cvSaveImage("crop.jpg",tmp);
cvShowImage( "crop", tmp);
lastTime = clock();
}
//Continue do whatever you want
这种方法的好处是,你可以在拍摄时做你想做的事
并且你的程序不会停止任何minTimeBetweenShots等于。
使用时的情况如下:
Sleep(timeToSleep)
除非它处于单独的线索中。