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