Detección de Sonrisa y Rostro en Cámaras Huawei
Clase 23 de 31 • Curso de Desarrollo de Aplicaciones con Huawei
Resumen
¿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!