You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让人脸识别程序运行5秒未检测到人脸时自动执行else逻辑

实现方案

你可以通过Python内置的time模块计时,配合标志位判断人脸检测状态实现需求,步骤如下:

  • 第一步:导入time模块,在进入识别循环前记录程序启动时间,同时定义人脸检测状态标志位
  • 第二步:每次检测到符合要求的人脸时,将标志位置为已检测状态
  • 第三步:每次循环末尾判断运行时长,超过5秒直接终止循环
  • 第四步:循环结束后根据标志位判断是否执行未检测到人脸的逻辑

修改后的完整可运行代码如下:

import time
import cv2

# 进入循环前初始化参数
start_time = time.time()
face_detected = False
# 你的其他初始化代码,比如names、font、cam初始化等放在此处

# 此处替换为你原来的for/while循环头即可
while True: 
    # 你的摄像头读取、人脸检测前置逻辑
    # ...

    # 原有识别逻辑
    if (accuracy >= 55):
        id = names[id]
        accuracy = "  {0}%".format(round(100 - accuracy))
        face_detected = True # 检测到有效人脸,更新标志位
    else:
        id = "unknown"
        accuracy = "  {0}%".format(round(100 - accuracy))

    cv2.putText(img, str(id), (x+5, y-5), font, 1, (255, 255, 255), 2)
    cv2.putText(img, str(accuracy), (x+5, y+h-5),
                font, 1, (255, 255, 0), 1)

    # 计时判断,运行超过5秒直接终止循环
    if time.time() - start_time >= 5:
        break

    k = cv2.waitKey(10) & 0xff
    if k == 2:
        break

cam.release()
cv2.destroyAllWindows()

# 5秒计时结束后执行对应逻辑
if not face_detected:
    # 此处放入你要执行的「5秒内未检测到人脸」的对应逻辑
    print("5秒内未检测到有效人脸")
  • 如果你需要连续多帧检测到人脸才算有效,可调整标志位的赋值逻辑,比如增加计数判断
  • 计时逻辑调用开销极低,不会影响原有识别帧率

内容的提问来源于stack exchange,提问作者Priyanshu Kadave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 22:45:04