Detección de rostros (Face detection) con jQuery: cómo funciona hoy y qué debes saber

- Andrés Cruz

EN In english

Detección de rostros  (Face detection) con jQuery: cómo funciona hoy y qué debes saber

Ver ejemplo Descargar fuente

La detección de caras para la creación de aplicaciones tiene un importante significado, poder emplear una tecnología como esta en un sitio web mediante un plugin JavaScript es algo que puede resultar útil en muchas ocasiones; por ejemplo, puedes tomar una imagen desde la cámara del dispositivo y a posterior verificar si en la imagen existe un rostros.

La detección de rostros ha sido durante años una funcionalidad muy llamativa en aplicaciones web. Poder analizar una imagen y obtener las coordenadas exactas de las caras abre la puerta a validaciones, recortes automáticos, etiquetado de personas o simples pruebas visuales.

Cuando empecé a trabajar con detección facial en el navegador, alrededor de 2013, hacerlo únicamente con JavaScript y jQuery ya parecía casi magia. Hoy el contexto ha cambiado bastante, pero sigue siendo interesante entender cómo funciona este enfoque clásico, cuáles son sus límites reales y en qué casos todavía tiene sentido utilizarlo.

En este artículo te explico cómo funciona la detección de caras con jQuery, cómo usar el plugin jquery.facedetection, qué devuelve exactamente y, sobre todo, qué debes tener en cuenta en 2026 antes de usarlo en un proyecto real.

¿Qué es la detección facial en aplicaciones web?

La detección facial (face detection) es el proceso mediante el cual se identifican rostros humanos dentro de una imagen, vídeo o flujo de cámara. Es importante aclarar algo desde el inicio: detectar no es reconocer.

  • Detección: localizar caras (coordenadas, tamaño, posición).
  • Reconocimiento: identificar a una persona concreta.

El plugin de jQuery del que hablamos aquí solo detecta caras, devolviendo posiciones y dimensiones, sin saber quién es la persona.

En mis primeras pruebas con este tipo de plugins, lo más útil no era la precisión absoluta, sino poder responder preguntas simples como: ¿hay un rostro en esta imagen? ¿cuántos hay? ¿dónde están?

El plugin jquery.facedetection: qué hace y cómo funciona

jquery.facedetection es un plugin creado por Jay Salvat que permite detectar caras en imágenes, vídeos o elementos canvas utilizando JavaScript del lado del cliente.

Aunque muchas veces se presenta como “sin Canvas”, la realidad es que internamente sí utiliza la API Canvas de HTML5 para analizar los píxeles de la imagen mediante getImageData.

Cómo detecta las caras internamente

El plugin se basa en un algoritmo clásico de detección (inspirado en Viola–Jones). No hay machine learning moderno ni redes neuronales; por eso:

  • Funciona rápido
  • Es ligero
  • Pero falla con ángulos, sombras o rostros parcialmente visibles

En más de una prueba real me encontré con imágenes donde detectaba una cara inexistente… y en otras ignoraba una bastante clara.

Qué datos devuelve el plugin

Al ejecutar el método faceDetection(), el plugin devuelve un array de objetos, donde cada objeto representa una cara detectada.

Propiedades más importantes:

  • x, y: coordenadas dentro de la imagen
  • width, height: dimensiones del rostro
  • positionX, positionY: posición relativa al documento
  • scaleX, scaleY: factor de escalado
  • confidence: nivel de confianza de la detección

Estos datos son la base para cualquier manipulación visual posterior

Instalación y configuración básica con jQuery

El plugin FaceDetection permite reconocer caras en imágenes e incluso videos; su funcionamiento es muy sencillo:

Aunque el código es antiguo, los navegadores modernos siguen soportándolo, siempre que se cumplan dos condiciones clave:

  • La imagen debe cargarse desde un servidor (no file://)
  • La imagen debe permitir acceso a Canvas (CORS)

Si no cumples esto, aparecerá el clásico error:

Failed to execute 'getImageData' on 'CanvasRenderingContext2D'

Inclusión de librerías

Instalamos el plugin disponible en el enlace anterior junto con una versión de jQuery; como indicamos en un inicio, es necesario jQuery para el funcionamiento del plugin JavaScript:

<script src="jquery.min.js"></script>
<script src="jquery.facedetection.min.js"></script>

Aplicamos el plugin a la imagen mediante el método faceDetection():

$('#picture').faceDetection({
        complete: function (faces) {
            console.log(faces);
        }
});

Y esto es todo, con sólo invocar la función faceDetection(), podrás detectar uno o más rostros en la imagen analizada, a partir de aquí es posible realizar muchas operaciones sobre la imagen con el array (compuesto de objetos) devuelto al completar la detección de la(s) cara(s); entre las más importantes tenemos:

xCoordenada X de la cara en la imagen.
yCoordenada Y de la cara en la imagen.
widthAncho de la cara.
heightLargo de la cara.
positionXCoordenada X de la cara relativa al documento.
positionYCoordenada Y de la cara relativa al documento.
scaleXRadio entre el ancho original de la imagen con el mostrado.
scaleYRadio entre el largo original de la imagen con el mostrado.

Un ejemplo real de los datos que devolvería al analizar una imagen:

[Object, Object, Object, Object]

La imagen analizada está compuesta de cuatro caras detectadas, en donde cada posición del array (cada Object que vimos arriba) corresponde a una cara detectada en la imagen o video; al analizar uno de las posiciones del array veremos todos los atributos que componen a la cara identificada:

[Object, Object, Object, Object]
0: Object
confidence: 9.849374709999992
height: 44.32027794030165
neighbors: 12
offsetX: 902.7123863876474
offsetY: 56.38056916787977
positionX: 250.21238638764734
positionY: 26.380569167879774
scaleX: 0.967741935483871
scaleY: 0.9684813753581661
width: 44.32027794030165
x: 250.21238638764734
y: 26.380569167879774

Un sencillo ejemplo para dibujar recuadros en las caras identificadas

Necesitaremos un HTML como el siguiente:

<div class="picture-container">
   <img id="picture" class="picture" src="picture.jpg">
</div>

En donde tengamos la imagen a analizar dentro de un contenedor.

Con esta función podemos crear un recuadro para que encierre la cara identificada:

$('#picture').faceDetection({
    complete: function (faces) {
        console.log(faces);
        
        for (var i = 0; i < faces.length; i++) {
            $('<div>', {
                'class':'face',
                'css': {
                    'position': 'absolute',
                    'left':     faces[i].x * faces[i].scaleX + 'px',
                    'top':      faces[i].y * faces[i].scaleY + 'px',
                    'width':    faces[i].width  * faces[i].scaleX + 'px',
                    'height':   faces[i].height * faces[i].scaleY + 'px'
                }
            })
            .insertAfter(this);
        }
    },
    error:function (code, message) {
        alert('Error: ' + message);
    }
});
  • Indicamos la imagen a analizar con $('#picture').faceDetection.
  • Recorremos todas las caras identificadas y accedemos a sus atributos desde for (var i = 0; i < faces.length; i++).
  • Creamos un recuadro que insertamos dentro del contenedor de la imagen según la posición de la cara identificada (faces[i].x y faces[i].y).

Consideraciones sobre el reconocimiento de caras con el plugin FaceDetection

Como todo algoritmo puede fallar; es decir, puede que no reconozca todas las caras en un imagen; el ángulo, sombras son factores que influyen al momento de reconocer caras en una imagen:

ejemplo del plugin face detection fallando

Debes ejecutar el script asociado al plugin dentro de un servidor; en caso contrario daría el siguiente error:

 Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The source width is 0. 

Esto es debido a que el plugin utiliza la API de Canvas provista por HTML5 para realizar sus operaciones, entre ellas la función getImageData para extraer información de la imagen.

Ver ejemplo Descargar fuente

Limitaciones reales del plugin FaceDetection

Este plugin:

  • Funciona bien con rostros frontales
  • Falla con inclinaciones
  • Se confunde con sombras y contrastes

No es raro que detecte “caras” en objetos con formas similares.

Problemas comunes con Canvas y CORS

Algunas imágenes externas no permiten ser leídas por Canvas. En proyectos reales tuve que:

  • Descargar imágenes al servidor
  • O usar proxies
  • O simplemente descartar este enfoque

¿Tiene sentido usar jQuery para detección facial en 2025?

Cuándo este enfoque sigue siendo válido

Sí tiene sentido si:

  • Quieres un demo rápido
  • Necesitas algo ligero
  • No requieres alta precisión
  • El proyecto ya usa jQuery

Para validaciones simples (por ejemplo, comprobar si una imagen tiene al menos un rostro), sigue siendo útil.

Alternativas modernas basadas en machine learning

Si necesitas algo más serio, hoy existen opciones mucho mejores:

  • face-api.js (sobre TensorFlow.js)
  • Modelos de detección modernos en el navegador
  • Mayor precisión y reconocimiento facial

Eso sí, a costa de:

  • Más peso
  • Más complejidad
  • Más tiempo de carga

Conclusiones finales

La detección de rostros con jQuery es una tecnología que cumplió muy bien su función, y que todavía puede tener cabida en escenarios concretos. Sin embargo, es importante usarla con criterio y sin expectativas irreales.

Este tipo de plugin funciona mejor como:

  • Herramienta educativa
  • Prototipo
  • Validación básica

Si tu proyecto depende realmente de la detección facial, hoy en día el camino pasa claramente por soluciones modernas basadas en machine learning.

El plugin FaceDetection para jQuery permite reconocer caras o rostros en imágenes e incluso vídeos, veremos su instalación y su uso mediante código JavaScript, consideraciones y ejemplos.

Acepto recibir anuncios de interes sobre este Blog.

Andrés Cruz

EN In english