Introducción a HMS Core

1

Pasos para el desarrollo de aplicaciones con Huawei

2

Debugging en la nube con Huawei

3

¿Qué es HMS Core?

4

Creación del proyecto en Android Studio

5

Creación de la aplicación en App Gallery Connect

6

Configuración de firma SHA-256

7

Configuración de APIs

8

Configuración de Android Studio y Gradle

9

Probando la sincronización de la aplicación

Autenticación con HMS Account Kit

10

Diseñando nuestra pantalla de login

11

Agregando los métodos de autenticación

12

Verificando la autenticación

13

Agregando el método de logout

Construyendo nuestra cámara de selfies con HMS ML Kit

14

Machine Learning con Huawei

15

Agregando los permisos para acceder a la cámara

16

Diseñando la pantalla personalizada de la cámara

17

Creando la capa de gráficos de la cámara

18

Creando el layout para nuestro rostro

19

Creando el layout del lente de la cámara

20

Creando nuestra actividad de cámara

21

Agregando nuestra cámara personalizada a la actividad

22

Agregando los métodos de verificación de rostro

23

Agregando la detección de rostro y sonrisa individual

24

Agregando la detección de rostro y sonrisa grupal

25

Tomar nuestra imagen y agregar un método de re-toma de foto

26

Guardar la foto en nuestra galeria

Aplicando notificaciones push con HMS Push kit

27

Crear el servicio de push notifications

28

Agregar el servicio de HMS Push kit

29

Verificar la conectividad de las notificaciones en App Gallery Connect

Conclusiones y consejos

30

Tips y solución de inconvenientes frecuentes

31

¿Qué más tiene Huawei?

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Agregando la detección de rostro y sonrisa individual

23/31
Recursos

¿Cómo detectar rostros y sonrisas individuales en una aplicación?

En el mundo del desarrollo de aplicaciones, integrar características de detección de rostros y sonrisas puede añadir una capa significativa de interacción y utilidad. En esta sección, aprenderás a implementar estas funciones, explorando cómo configurar y verificar la detección de emociones para tomar una foto cuando un sujeto sonríe.

¿Qué son las variables smiling posibility y save to take picture?

Para lograr la detección de sonrisas, primero necesitamos definir ciertas variables clave:

  • smiling posibility: Es una variable que determina el umbral de reconocimiento de sonrisa, configurada en un 0.95, que representa un porcentaje del 95%. Según la documentación, este umbral es el más efectivo para determinar si se debe tomar una foto basado en la sonrisa.
  • save to take picture: Esta variable se utiliza para verificar si es seguro tomar una foto, dependiendo de la evaluación del nivel de sonrisa detectado.

¿Cómo crear un analizador de rostros?

El siguiente paso implica retirar el analizador actual del motor y crear una función para el análisis de los rostros:

Código para crear un analizador de rostros

fun createFaceAnalyzer() {
    val faceAnalyzerSetting = FaceAnalyzerSetting.Builder()
        .setFeatureType(TypeFeatures.KEYPOINTS)
        .setMinFaceProportion(0.1f)
        .setTracingAllowed(true)
        .build()

    val analyzer = FaceAnalyzerFactory.getInstance(context).getFaceAnalyzer(faceAnalyzerSetting)
    if (detectionMode == 1003) { // Modo fotografía individual
        val faceTransactor = MLFaceTransactor(analyzer, object : MLResult.Callback<MLFace> {
            override fun onSuccess(result: List<MLFace>?) {
                if (result != null && result.isNotEmpty()) {
                    val face = result[0]
                    if (face.emotions.smilingProbability > smilingPossibility) {
                        saveToTakePicture = true
                    }
                }
            }
            // Otros métodos override para manejo de errores, etc.
        })
    }
}

¿Cómo configurar el módulo de callbacks?

Los callbacks juegan un rol crucial en el manejo de eventos dentro de la app. Aquí configuras las acciones a realizar una vez que el reconocimiento facial detecta una sonrisa:

Ejemplo de callback

override fun onFaceDetected(itemId: String?, face: MLFace?) {
    overlay.clear()
    if (face == null) return

    // Pintar el quadro en la cara detectada
    val faceGraphic = LocalFaceGraphic(overlay, context, face)
    overlay.add(faceGraphic)

    if (face.emotions.smilingProbability > smilingPossibility) {
        saveToTakePicture = true
    }
}

¿Cómo corregir errores comunes en la detección de rostros?

Durante el desarrollo y pruebas de la aplicación, es común encontrarse con errores que afectan la visualización o la precisión de la detección:

  • Verifica y corrige cualquier fallo tipográfico en los ejes utilizados para pintar el cuadro sobre el rostro.
  • Asegúrate de que los callbacks y las funciones estén correctamente configurados para responder a los eventos esperados.

Este enfoque modular y detallado no solo facilita la implementación, sino que también optimiza la detección de rostros y sonrisas, mejorando así la experiencia de usuario. Con el conocimiento adquirido, estás más preparado para aplicar estas técnicas y explorar nuevas funcionalidades en tus proyectos. ¡Sigue aprendiendo y explorando más posibilidades en el mundo del desarrollo de interfaces de usuario!

Aportes 3

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

En ocaciones el circulo de su cara no deja ver bien lo que está escribiendo.

De acuerdo con la documentacion oficial

objectCreateCallback se llama cuando se detecta un nuevo objeto (rostro)
objectUpdateCallback se llama cuando el objeto (rostro) del FRAME actual es el mismo del FRAME anterior
lostCallback se llama cuando se ha perdido el rastreo de un objeto (rostro) y aun no ha superado la cantidad de FRAMES de perdido
completeCallback se llama cuando se ha perdido el rastreo de un objeto (rostro) y se superó la cantidad de FRAMES de perdido

Excelente hasta que se ven resultados visuales 😃