Detección facial
Introducción
Robobo puede detectar caras mediante el procesado de la imagen de la cámara. Este módulo no está implementado en el simulador.
Elementos de programación
1. Class Face
Representa una cara detectada por Robobo usando la cámara frontal.
Atributos:
-
-
-
-
- posx (int): La coordenada X del centro de la cara detectada. Los valores están en el rango de 0 a 100.
- posy (int): La coordenada Y del centro de la cara detectada. Los valores están en el rango de 0 a 100.
- distance (int): La distancia entre los ojos de la persona, medida en píxeles. Este valor es mayor cuanto más cerca esté la persona de la cámara. El valor es siempre positivo.
-
-
-
2. Método startFaceDetection
| startFaceDetection() |
|
Habilita la detección facial. La detección facial está habilitada por defecto. Este cambio es persistente. |
3. Método stopFaceDetection
| stopFaceDetection() |
|
Deshabilita la detección facial.
La detección facial está habilitada por defecto. Este cambio es persistente. |
4. Método resetFaceSensor
| resetFaceSensor() |
Reinicia el sensor facial. Después de utilizar este método, y mientras no se detecte una nueva cara, el sensor facial devolverá 0 para cada atributo leído.
|
5. Método readFaceSensor
| readFaceSensor() |
|
Lee la última cara detectada por Robobo.
Devuelve: |
Ejemplo de Uso
El siguiente programa hace que Robobo diga dónde ve la cara que está detectando de forma natural para el usuario. Así, cada segundo, dice si ve una cara a la derecha, izquierda o centrada. Si no ve ninguna cara, también lo dice. Para ello, utiliza la coordenada x de la cara que detecta.
Inicialmente se activa la detección facial haciendo uso del método startFaceDetection. Al cabo de 4 segundos, se termina el bucle y se desactiva la detección con stopFaceDetection.
from robobopy.Robobo import Robobo
rob = Robobo("localhost")
rob.connect()
rob.startFaceDetection()
for i in range(4):
if rob.readFaceSensor().posx > 40 and rob.readFaceSensor().posx < 60:
rob.sayText('Te veo a la izquierda')
else:
if rob.readFaceSensor().posx > 1 and rob.readFaceSensor().posx < 40:
rob.sayText('Te veo a la derecha')
else:
rob.sayText('No te veo')
rob.resetFaceSensor()
rob.wait(1)
rob.stopFaceDetection()6. Método whenAFaceIsLost
| whenAFaceIsLost(callback) |
|
Establece la función callback que se llama cuando se pierde una cara.
Parámetros: |
Ejemplo de Uso
El siguiente programa hace que Robobo diga «No te veo» de manera continua cada 2 segundos siempre que pierda una cara.
from robobopy.Robobo import Robobo
def face_lost():
rob.sayText('No te veo')
rob.wait(2)
rob = Robobo("10.113.26.150")
rob.connect()
rob.whenAFaceIsLost(face_lost)
# el programa se mantiene en ejecución continua
while True:
rob.wait(0.1)7. Método whenANewFaceIsDetected (callback)
| whenANewFaceIsDetected(callback) |
|
Establece la función callback que se llama cuando se detecta una nueva cara.
Parámetros: |
Ejemplo de Uso
El siguiente programa hace que Robobo diga «Te veo» de manera continua cada 2 segundos siempre que detecte una cara.
from robobopy.Robobo import Robobo
def face_detected():
rob.sayText('Te veo')
rob.wait(2)
rob = Robobo("10.113.26.150")
rob.connect()
rob.whenANewFaceIsDetected(face_detected)
# el programa se mantiene en ejecución continua
while True:
rob.wait(0.1)