在检测到python时运行特定代码

时间:2018-12-02 10:13:49

标签: python python-3.x pygame driver

此代码用于在检测到驾驶员昏昏欲睡时发出警报

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()

预先感谢

1 个答案:

答案 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()

请注意,由于您尚未提供完整的代码示例,因此很难为您提供帮助