如何在c ++中查找函数是不是在一定时间内返回某个值?

Posted

技术标签:

【中文标题】如何在c ++中查找函数是不是在一定时间内返回某个值?【英文标题】:How to find if a function returns a certain value for a certain amount of time in c++ ??如何在c ++中查找函数是否在一定时间内返回某个值? 【发布时间】:2015-01-27 10:17:02 【问题描述】:

我正在开展一个项目,我正在将用户的不同身体姿势转换为语音。每当用户做出手势时,手势识别函数都会返回某个值,否则返回零。但是我不希望程序出错,所以我想检查函数是否在一定时间内返回该特定值。我知道我可以使用延迟或计数器来做到这一点,但是在 c++/visual studio 中有没有更有效的方法来做到这一点? 我想做这样的事情

     if (gesture_function==somevalue_for_some_milliseconds)

我知道我能做到 如果(手势功能==值) 延迟毫秒() 如果(手势功能==值) 是的手势 别的 没有做出手势

干杯......

【问题讨论】:

大概你有一些线程从相机获取新帧并在它们上调用一些手势识别函数:该线程必须要么从你的相机 API 获得“回调”,要么在帧之间阻塞。无论哪种方式,您都可以保留产生相同手势的帧数的计数器 - 如果手势更改覆盖“lastest_gesture_seen”变量并将计数器重置为 0。当计数器达到某个值时,对其进行操作。如果它很脆弱,您可以使用循环缓冲区和容差,例如如果最后 10 个手势函数中的 8 个产生的值相同,则您尊重它。 more efficient way 是什么意思?更高效的编程时间、更高效的内存资源、更高效的执行时间或更“高效”的鲁棒性/质量?!? 我只是想知道是否有执行此操作的命令。例如,在 opencv 中,我们有 WaitKey(delay)=="KEYVALUE" 通过这样做我可以找到某个键​​是否被按下了一段时间(由延迟给出)并相应地继续 afaik 没有操作系统或硬件解决方案来观察内存位置的变化,但如果你创建一个类并使用 getter 和 setter 应该很容易实现;) 【参考方案1】:

为什么不只是每隔几毫秒轮询一次,然后创建一个用于创建移动平均线的大数组?

每 100 毫秒将手势识别转换为真或假 -> 在一个数组中最多存储 50 个值 -> 检查所有值的平均值是否高于 T,使得 T 是介于 0.00 和 1.00 之间的容差因子。 -> 如果移动平均 > T,则手势被识别。

【讨论】:

以上是关于如何在c ++中查找函数是不是在一定时间内返回某个值?的主要内容,如果未能解决你的问题,请参考以下文章

在VB中,如何生成某个范围内的随机整数?

c语言,查找数组中是不是存在某个数?

如何在一定百分比的时间内生成随机数

如何在 FFmpeg C/C++ 中寻找

如何使用函数在 C 中返回二维数组?

如何使用 cffi 在 C 中嵌入一个返回字符串的 Python 函数?