Índice:
- Etapa 1: Coisas que você precisa
- Etapa 2: conjunto de dados Python Code With Eyes Shape Predictor (versão para PC)
- Etapa 3: versão Raspberry Pi
Vídeo: Sistema de alerta de sonolência: 3 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:35
Todos os anos, muitas pessoas perdem a vida devido a acidentes rodoviários fatais em todo o mundo e a sonolência ao volante é uma das principais causas de acidentes rodoviários e morte. A fadiga e o microssono nos controles de direção costumam ser a causa raiz de acidentes graves. No entanto, os sinais iniciais de fadiga podem ser detectados antes que surja uma situação crítica e, portanto, a detecção de fadiga do motorista e sua indicação é um tópico de pesquisa em andamento. A maioria dos métodos tradicionais para detectar sonolência é baseada em aspectos comportamentais, enquanto alguns são intrusivos e podem distrair os motoristas, enquanto alguns requerem sensores caros. Portanto, neste artigo, um sistema leve de detecção de sonolência do motorista em tempo real é desenvolvido e implementado no aplicativo Android. O sistema grava os vídeos e detecta o rosto do motorista em cada quadro, empregando técnicas de processamento de imagem. O sistema é capaz de detectar pontos de referência faciais, calcula Eye Aspect Ratio (EAR) e Eye Closure Ratio (ECR) para detectar a sonolência do motorista com base no limiar adaptativo. Algoritmos de aprendizado de máquina têm sido empregados para testar a eficácia da abordagem proposta. Os resultados empíricos demonstram que o modelo proposto é capaz de atingir uma precisão de 84% usando o classificador florestal aleatório.
Etapa 1: Coisas que você precisa
1. RASPBERRY PI
2. WEBCAM (C270 HD WEB CAM PARA MELHORES RESULTADOS)
A versão do PC pode precisar de algumas mudanças no código
Etapa 2: conjunto de dados Python Code With Eyes Shape Predictor (versão para PC)
para detectar olhos de forma muito eficaz em um vídeo em tempo real, podemos usar este arquivo.dat abaixo.
drive.google.com/open?id=1UiSHe72L4TeN14VK…
Baixe o arquivo.dat do link acima e execute o código python abaixo
Código Python
from scipy.spatial import distancefrom imutils import face_utils import imutils import dlib import cv2
def eye_aspect_ratio (olho):
A = distância.euclidiana (olho [1], olho [5]) B = distância.euclidiana (olho [2], olho [4]) C = distância euclidiana (olho [0], olho [3]) orelha = (A + B) / (2.0 * C) return ear thresh = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector () predict = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat") # O arquivo Dat é o ponto crucial do código
(lStart, lEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS ["left_eye"]
(rStart, rEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS ["right_eye"] cap = cv2. VideoCapture (0) flag = 0 enquanto True: ret, frame = cap.read () frame = imutils.resize (frame, width = 450) cinza = cv2.cvtColor (quadro, cv2. COLOR_BGR2GRAY) assuntos = detectar (cinza, 0) para o assunto em assuntos: forma = prever (cinza, assunto) forma = face_utils.shape_to_np (forma) #convertendo para NumPy Array leftEye = forma [lIniciar: lEnd] rightEye = forma [rStart: rEnd] leftEAR = eye_aspect_ratio (leftEye) rightEAR = eye_aspect_ratio (rightEye) orelha = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull (leftEye) rightEyeHull = cv2.convex. drawContours (frame, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (frame, [rightEyeHull], -1, (0, 255, 0), 1) if ear = frame_check: cv2.putText (frame, "**************** ALERT! ****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (frame, "**************** ALERTA! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0,7, (0, 0, 255), 2) #print (" Dro wsy ") else: flag = 0 cv2.imshow (" Frame ", frame) key = cv2.waitKey (1) & 0xFF if key == ord (" q "): break cv2.destroyAllWindows () cap.stop ()
Etapa 3: versão Raspberry Pi
quando a pessoa fecha os olhos então o pi de framboesa vai te alertar
CONECTE sua campainha ao pino 23 (veja a imagem)
da distância de importação scipy.spatial
importar RPi. GPIO como GPIO
do tempo importar dormir
GPIO.setwarnings (False)
GPIO.setmode (GPIO. BCM)
de imutils import face_utils
import imutils import dlib import cv2
campainha = 23
GPIO.setup (campainha, GPIO. OUT)
def eye_aspect_ratio (olho):
A = distância.euclidiana (olho [1], olho [5]) B = distância.euclidiana (olho [2], olho [4]) C = distância euclidiana (olho [0], olho [3]) orelha = (A + B) / (2.0 * C) return ear thresh = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector () predict = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat") # O arquivo Dat é o ponto crucial do código
(lStart, lEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS ["left_eye"]
(rStart, rEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS ["right_eye"] cap = cv2. VideoCapture (0) flag = 0 enquanto True: ret, frame = cap.read () frame = imutils.resize (frame, width = 450) cinza = cv2.cvtColor (quadro, cv2. COLOR_BGR2GRAY) assuntos = detectar (cinza, 0) para o assunto em assuntos: forma = prever (cinza, assunto) forma = face_utils.shape_to_np (forma) #convertendo para NumPy Array leftEye = forma [lIniciar: lEnd] rightEye = forma [rStart: rEnd] leftEAR = eye_aspect_ratio (leftEye) rightEAR = eye_aspect_ratio (rightEye) orelha = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull (leftEye) rightEyeHull = cv2.convex. drawContours (frame, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (frame, [rightEyeHull], -1, (0, 255, 0), 1) if ear = frame_check: cv2.putText (frame, "**************** ALERT! ****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (frame, "**************** ALERTA! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0,7, (0, 0, 255), 2) #print (" Dro wsy ")
GPIO.output (campainha, GPIO. HIGH)
else: flag = 0
GPIO.output (campainha, GPIO. LOW)
cv2.imshow ("Frame", frame) key = cv2.waitKey (1) & 0xFF if key == ord ("q"): break cv2.destroyAllWindows () cap.stop ()
Recomendado:
Sistema de alerta avançado de slide: 6 etapas
Slide Advance Alert System: Na Brown Dog Gadgets, fazemos muito streaming de vídeo para workshops e nossa configuração inclui uma pessoa na câmera e outra como o produtor que executa o software, monitora a janela de bate-papo e faz a troca de câmera e avanços os slides
Sistema de alerta de acidentes usando GSM, GPS e acelerômetro: 5 etapas (com fotos)
Sistema de alerta de acidentes usando GSM, GPS e acelerômetro: Vote em mim para o concurso Vote em mim para o concurso. Hoje em dia, muitas pessoas morreram na estrada devido a um acidente, a principal causa é o " atraso no resgate ". Este problema é muito grande em países em desenvolvimento, então desenvolvi este projeto para salvar o
Sistema de luz de alerta meteorológico: 6 etapas
Sistema de luz de alerta meteorológico: O sistema de iluminação de alerta meteorológico muda a iluminação para indicar diferentes avisos ou relógios meteorológicos. Este sistema aproveita os dados meteorológicos de livre acesso para fazer uma mudança de iluminação para indicar o estado do tempo. Um pi de framboesa (via node-red) verifica o
Sistema de alerta da campainha do corredor: 4 etapas
Sistema de aviso de campainha no corredor: Na escola, há campainhas que indicam quando a mudança de classe deve acontecer. Eles tocam primeiro para indicar quando a aula deve terminar e, em seguida, tocam uma segunda vez para indicar quando a próxima aula deve começar. Se um aluno está atrasado, então ele geralmente tem t
Sistema de alerta de solo com baixa umidade para sua planta: 5 etapas
Sistema de Alerta de Solo Baixa Umidade para Sua Planta: Em várias residências, é comum encontrar potes com diferentes tipos de plantas. E com o grande número de atividades do dia a dia, as pessoas se esquecem de regar as plantas e acabam morrendo por falta de água. Como forma de evitar esse problema, a gente decide