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:
• La cara (Face). Ver Clase Face.

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:
callback (fun): La función callback que será llamada.

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:
callback (fun): La función callback que será llamada.

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)
Robobo
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.