如何检查眼睛是否在x时间段内未被检测到

2024-10-03 04:28:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在编写一个使用openCV和haar级联的程序。我需要它来运行一些代码,如果眼睛在几秒钟内没有被检测到,我不知道如何使用时间库来检查时间。这是我尝试过的一个例子

if len(eyes) == 0:
    if noEyeTime - startTime > 2:
        print("closed for more than 2 seconds")
        time.sleep(2)
        startTime = time.time()
    noEyeTime = time.time()
# The variables are declared outside of the while loop

这是我写的检查(在while-True循环中),我尝试过在变量更新中移动,但我不知道如何检查眼睛是否在x时间段内未被检测到

我也读过这篇文章: Python if condition true for x amount of time

但是这个解决方案对我不起作用,因为程序仍然需要运行,所以time.sleep()不是一个选项

提前谢谢


Tags: of代码程序foriftime时间sleep
2条回答

您可以通过在开始无眼检测之前创建一个starting_noEye=time.time()和在代码的无眼检测部分末尾创建一个ending_noEye=time.time()来获得时间轨迹。noEyeTime可以分配给以下各项的差异:-noEyeTime=ending_noEye-starting_noEye。这将为您提供未检测到眼睛的时间量

由于Ritesh的想法,我将开始时间移动到眼睛被检测到的位置,然后将其与眼睛未被检测到的当前时间进行比较。代码如下所示:

# Writes to log file when eyes are detected
if anterior != len(eyes):
    anterior = len(eyes) 
    log.info("faces: "+str(len(eyes))+" at "+str(dt.datetime.now()))
    startTime = time.time()

if len(eyes) == 0:
    elapsedTime = endingTime - startTime
    if elapsedTime > 2:
        print("eyes closed for 2 seconds")
    endingTime = time.time()

相关问题 更多 >