时间延迟视觉C ++ [重复]
Posted
技术标签:
【中文标题】时间延迟视觉C ++ [重复]【英文标题】:Time Delay visual C++ [duplicate] 【发布时间】:2013-04-03 15:31:07 【问题描述】:我必须以 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;
【问题讨论】:
有很多方法,见e.g.Sleep
,或SetTimer
。
“无法正常工作”是什么意思?
你试过搜索吗?这个问题在网站上已经有很多答案了。
【参考方案1】:
使用适当的睡眠功能,而不是用循环破解某些东西。使用的正确功能可能取决于您的操作系统,但在 Windows 上,您可以使用 Sleep,正如 Joachim Pileborg 所建议的那样:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms686298(v=vs.85).aspx
【讨论】:
【参考方案2】:你可以使用时钟。这是一个例子:
http://www.cplusplus.com/forum/beginner/76147/#msg408731
.NET 框架上实际上有一个 Timer 类。
http://msdn.microsoft.com/en-us/library/system.timers.timer(v=vs.71).aspx
【讨论】:
【参考方案3】:我会像 Raul 一样使用时钟来检查自上次保存图像以来的时间。有很多方法可以做到这一点,但我 将尝试在此处使用时钟来说明该概念的示例:
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)
除非它在一个单独的线程中。
【讨论】:
以上是关于时间延迟视觉C ++ [重复]的主要内容,如果未能解决你的问题,请参考以下文章