Conducción de automóviles con detección de manos en Python

En este proyecto, vamos a demostrar cómo se puede conducir un automóvil con solo detectar los gestos de las manos en el volante. Digamos que el requisito es algo como esto:

  • Si el conductor quiere arrancar el automóvil, coloque ambas manos en el volante.
  • Si alguien no tiene las manos en el volante, eso significa que los frenos del automóvil se aplicarán lentamente.
  • Si se detecta una mano en el volante, significa que puede conducir el automóvil hasta cierto límite por motivos de seguridad.
  • Si alguien tiene ambas manos en el volante, eso significa que puede conducir a cualquier velocidad porque, según nuestro sistema, está seguro y puede manejar el automóvil de manera segura con ambas manos.

Para este proyecto, necesitamos importar dos bibliotecas de Python que son OpenCV y numpy . Cómo instalar estas dos bibliotecas.

1) pip install opencv-python
2) pip install numpy

A continuación se muestra la implementación:

Código #1:

import cv2
import numpy as np
  
cap = cv2.VideoCapture(0)
hand_cascade = cv2.CascadeClassifier('hand.xml')

Explicación:
hemos importado dos bibliotecas llamadas opencv y numpy . Luego, en la siguiente línea, usamos la función VideoCapture(0)de opencv y pasamos el parámetro como 0 porque la cámara web de su computadora portátil admite el puerto 0 para usar la cámara. Ahora, use la función CascadeClassifier('hand.xml')y pase el archivo xml como parámetro. Almacene el archivo de hand.xml en el mismo directorio que el archivo de Python.
 
Código #2:

count = 0
  
while(True):
    ret, frame = cap.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    hands = hand_cascade.detectMultiScale(gray, 1.5, 2)
    contour = hands
    contour = np.array(contour)
  
    if count==0:
  
        if len(contour)==2:
            cv2.putText(img=frame, text='Your engine started',
                        org=(int(100 / 2 - 20), int(100 / 2)),
                        fontFace=cv2.FONT_HERSHEY_DUPLEX, 
                        fontScale=1, color=(0, 255, 0))
                          
            for (x, y, w, h) in hands:
                cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
            count += 1
  
    if count>0:
  
        if len(contour)>=2:
            cv2.putText(img=frame, text='You can take your car on long drive',
                        org=(int(100 / 2 - 20), int(100 / 2)),
                        fontFace=cv2.FONT_HERSHEY_DUPLEX, 
                        fontScale=1, color=(255, 0, 0))
                          
            for (x, y, w, h) in hands:
                cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
              
  
        elif len(contour)==1:
            cv2.putText(img=frame, text='You can speed upto 80km/h',
                        org=(int(100 / 2 - 20), int(100 / 2)),
                        fontFace=cv2.FONT_HERSHEY_DUPLEX, 
                        fontScale=1, color=(0, 255, 0))
                          
            for (x, y, w, h) in hands:
                cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
  
        elif len(contour)==0:
            cv2.putText(img=frame, text='Brake is applied slowly',
                        org=(int(100 / 2 - 20), int(100 / 2)),
                        fontFace=cv2.FONT_HERSHEY_DUPLEX, 
                        fontScale=1, color=(0, 0, 255))
  
        count += 1
  
cv2.imshow('Driver_frame', frame)
k = cv2.waitKey(30) & 0xff
if k == 27:
    break

Salida:


Explicación:
en esta sección de código, usamos el contador que puede ayudarnos a arrancar el motor del automóvil y, después de que el automóvil arranca, usamos el conteo de contornos en un volante.

 
Enlace GitHub del proyecto – Haga clic aquí

Publicación traducida automáticamente

Artículo escrito por Jitender_1998 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *