我使用opencv来检测手势(在这个例子中,当我抬起食指时),当手势发生时,它会打印“hi”,然后我使用time.sleep暂停打印1秒,因为它会打印到我放下食指为止,但是time.sleep会暂停整个画面,所以如果我睡5秒,画面将不会运行,直到这5秒过去。
我能做些什么来利用这段时间呢?睡觉时不要暂停录像
while True:
#all the opencv initial stuff
#mediapipe functions for the hand detection
if INDEX_UP:
print("hi")
time.sleep(2)
cv2.imshow("Frame", frame)
if cv2.waitKey(1) & 0xFF == 27: break
我试图在while循环中使用time.sleep,但time.sleep会暂停视频,直到time.sleep结束。
3条答案
按热度按时间xxls0lw81#
我尝试使用2个单独的线程来完成while循环,另一个线程用于sleep,但它没有睡觉。
niwlg2el2#
当您注意到食指抬起时,获取系统时间,加上2秒,并将其保存在名为
pauseEndTime
的变量中。现在,在你的主循环中,如果你想在暂停期间避免做一些事情,用一个测试来围绕它:
如果您想在暂停期间继续采集,只需运行采集而不进行
if
检查。jdgnovmf3#
time.sleep()
将在指定的时间内阻塞线程执行。Nick Bastin在answer中对此进行了描述,您也可以找到有用的示例。