时间延迟视觉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 ++ [重复]的主要内容,如果未能解决你的问题,请参考以下文章

python中的时间延迟[重复]

Java中的C ++(OpenCV)[重复]

SwiftUI 动画:如何延迟重复动画

ObjectAnimator 重复循环延迟

Python:无重复延迟的键盘输入

如何延迟onClick(Android)[重复]