此代码用于在检测到驾驶员昏昏欲睡时发出警报
if args["alarm"] != "":
t = Thread(target=sound_alarm,
args=(args["alarm"],))
t.daemon = False
t.start()
整个代码如下:
if ear < EYE_AR_THRESH:
COUNTER += 1
# if the eyes were closed for a sufficient number of
# then sound the alarm
if COUNTER >= EYE_AR_CONSEC_FRAMES:
# if the alarm is not on, turn it on
if not ALARM_ON:
ALARM_ON = True
# check to see if an alarm file was supplied,
# and if so, start a thread to have the alarm
# sound played in the background
if args["alarm"] != "":
t = Thread(target=sound_alarm,
args=(args["alarm"],))
t.daemon = False
t.start()
# draw an alarm on the frame
cv2.putText(frame, "DROWSINESS ALERT!", (10, 30),
cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2)
fan_on()
# otherwise, the eye aspect ratio is not below the blink
# threshold, so reset the counter and alarm
else:
COUNTER = 0
ALARM_ON = False
fan_off()
为简单起见。如果检测到驾驶员困倦,则会发出警报声。 当警报检测到驾驶员困倦时如何运行警报,因为与此同时警报仅运行一次。
这是我的声音警报方法:
def sound_alarm(path):
pygame.mixer.init()
pygame.mixer.music.load(path)
pygame.mixer.music.play()
预先感谢
答案 0 :(得分:1)
我建议您使用while
循环,以便重复代码,直到特定条件变为 False < / p>
while
循环的主要结构如下:
while condition_which_is_true:
do_something()
因此,在这种特殊情况下,我将执行以下操作:
if ear < EYE_AR_THRESH:
COUNTER += 1
# if the eyes were closed for a sufficient number of
# then sound the alarm
if COUNTER >= EYE_AR_CONSEC_FRAMES:
# if the alarm is not on, turn it on
while not ALARM_ON:
ALARM_ON = True
# check to see if an alarm file was supplied,
# and if so, start a thread to have the alarm
# sound played in the background
if args["alarm"] != "":
t = Thread(target=sound_alarm,
args=(args["alarm"],))
t.daemon = False
t.start()
# draw an alarm on the frame
cv2.putText(frame, "DROWSINESS ALERT!", (10, 30),
cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2)
fan_on()
# otherwise, the eye aspect ratio is not below the blink
# threshold, so reset the counter and alarm
else:
COUNTER = 0
ALARM_ON = False
fan_off()
请注意,由于您尚未提供完整的代码示例,因此很难为您提供帮助