Quantcast
Channel: Raspberry Pi Forums
Viewing all articles
Browse latest Browse all 5313

General discussion • Drowsiness Detector

$
0
0
hi all, i want to build a drowsiness detector, but when i run the script, it will stuck here:

Code:

(venv) cheeyong@raspberrypi:~ $ python3 /home/cheeyong/Downloads/test.py[7:28:43.907147138] [11540]  INFO Camera camera_manager.cpp:284 libcamera v0.1.0+118-563cd78e[7:28:43.945484958] [11553]  WARN RPiSdn sdn.cpp:39 Using legacy SDN tuning - please consider moving SDN inside rpi.denoise[7:28:43.949962593] [11553]  INFO RPI vc4.cpp:444 Registered camera /base/soc/i2c0mux/i2c@1/ov5647@36 to Unicam device /dev/media2 and ISP device /dev/media1[7:28:43.950111226] [11553]  INFO RPI pipeline_base.cpp:1142 Using configuration file '/usr/share/libcamera/pipeline/rpi/vc4/rpi_apps.yaml'[7:28:43.955124799] [11540]  INFO Camera camera_manager.cpp:284 libcamera v0.1.0+118-563cd78e[7:28:43.988421805] [11556]  WARN RPiSdn sdn.cpp:39 Using legacy SDN tuning - please consider moving SDN inside rpi.denoise[7:28:43.990460849] [11556]  INFO RPI vc4.cpp:444 Registered camera /base/soc/i2c0mux/i2c@1/ov5647@36 to Unicam device /dev/media2 and ISP device /dev/media1[7:28:43.990536240] [11556]  INFO RPI pipeline_base.cpp:1142 Using configuration file '/usr/share/libcamera/pipeline/rpi/vc4/rpi_apps.yaml'[7:28:43.997098939] [11540]  INFO Camera camera.cpp:1183 configuring streams: (0) 640x480-XRGB8888 (1) 640x480-SGBRG10_CSI2P[7:28:43.997621728] [11556]  INFO RPI vc4.cpp:608 Sensor: /base/soc/i2c0mux/i2c@1/ov5647@36 - Selected sensor format: 640x480-SGBRG10_1X10 - Selected unicam format: 640x480-pGAA
my python code as below:

Code:

from scipy.spatial import distance as distfrom imutils.video import VideoStreamfrom imutils import face_utilsfrom threading import Threadimport numpy as npimport RPi.GPIO as GPIOimport argparseimport imutilsimport timeimport dlibimport cv2from picamera2 import Picamera2buzzer_pin = 16picam2 = Picamera2()picam2.configure(picam2.create_preview_configuration(main={"format": 'XRGB8888', "size": (640, 480)}))picam2.start()GPIO.setmode(GPIO.BOARD)GPIO.setwarnings(False)hog_face_detector = dlib.get_frontal_face_detector()predictor = dlib.shape_predictor("/home/cheeyong/Downloads/drowsinessDetector-master/shape_predictor_68_face_landmarks.dat")sleep = 0drowsy = 0active = 0status = ""def compute(ptA, ptB):    dist = np.linalg.norm(ptA - ptB)    return distdef blinked(a, b, c, d, e, f):    up = compute(b, d) + compute(c, e)    down = compute(a, f)    ratio = up / (2.0 * down)    if ratio > 0.25:        return 2    elif 0.21 < ratio <= 0.25:        return 1    else:        return 0while True:    im = picam2.capture_array()    gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)    faces = hog_face_detector(gray)    for face in faces:        x1, y1, x2, y2 = face.left(), face.top(), face.right(), face.bottom()        face_frame = im.copy()        cv2.rectangle(face_frame, (x1, y1), (x2, y2), (0, 255, 0), 2)        landmarks = predictor(gray, face)        landmarks = face_utils.shape_to_np(landmarks)        left_blink = blinked(landmarks[36], landmarks[37],                             landmarks[38], landmarks[41], landmarks[40], landmarks[39])        right_blink = blinked(landmarks[42], landmarks[43],                              landmarks[44], landmarks[47], landmarks[46], landmarks[45])        if left_blink == 0 or right_blink == 0:            sleep += 1            drowsy = 0            active = 0            if sleep > 1:                status = "SLEEPING !!!"                print("SLEEPING !!!")                GPIO.output(buzzer_pin, GPIO.HIGH)                        elif 0.21 < left_blink == 1 or right_blink == 1:            sleep = 0            active = 0            drowsy += 1            if drowsy > 1:                status = "Drowsy !"                GPIO.output(buzzer_pin, GPIO.HIGH)        else:            drowsy = 0            sleep = 0            active += 1            if active > 1:                status = "Active :)"                print("Active !!!")                GPIO.output(buzzer_pin, GPIO.LOW)        cv2.putText(im, status, (100, 100), cv2.FONT_HERSHEY_SIMPLEX, 1.2, (0, 0, 255), 3)        for n in range(0, 68):            x, y = landmarks[n]            cv2.circle(face_frame, (x, y), 1, (255, 255, 255), -1)    cv2.imshow("Frame", im)    key = cv2.waitKey(1)        if key == ord("q"):        breakPicamera2.release()cv2.destroyAllWindows()cap.stop()
Can someone help me figure out where is the issue please? Thanks in advance

Statistics: Posted by matteo2002starter — Fri Feb 02, 2024 8:37 am



Viewing all articles
Browse latest Browse all 5313

Trending Articles