0% encontró este documento útil (0 votos)
319 vistas9 páginas

Java: Rostros con OpenCV y Eclipse

Este documento describe cómo implementar el reconocimiento facial en Java usando la biblioteca OpenCV. Explica que OpenCV facilita la creación de aplicaciones que requieren reconocimiento y seguimiento de objetos o rostros en video en tiempo real. Proporciona los pasos para descargar e instalar OpenCV, Java y Eclipse, y configurar un proyecto en Eclipse para detectar rostros usando la webcam y marcar el área detectada.

Cargado por

YesidRaadRomero
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
319 vistas9 páginas

Java: Rostros con OpenCV y Eclipse

Este documento describe cómo implementar el reconocimiento facial en Java usando la biblioteca OpenCV. Explica que OpenCV facilita la creación de aplicaciones que requieren reconocimiento y seguimiento de objetos o rostros en video en tiempo real. Proporciona los pasos para descargar e instalar OpenCV, Java y Eclipse, y configurar un proyecto en Eclipse para detectar rostros usando la webcam y marcar el área detectada.

Cargado por

YesidRaadRomero
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

8/2/2019 Java – Reconocimiento de Rostros con OpenCV – decodigo.

com

[Link]
PROGRAMACIÓN, CÓDIGO, HUMOR Y OTRAS HIERBAS.
EJEMPLOS JAVA EJEMPLOS PYTHON EJEMPLOS C# EJEMPLOS C++ PUBLICACIONES Y TUTORIALES LIBROS REC

 Home / Java – Reconocimiento de Rostros con OpenCV De Código y Program…


Te gusta 150 mil Me gusta

Java – Reconocimiento de Rostros con OpenCV Preguntas Java


Comics e Imágenes
Este pequeño ejemplo está basado en OpenCV
OpenCV 3.1,
3.1 es sencillo y requiere, además de descargar la biblioteca, una webcam Más Recursos
conectada a tu equipo.  Es necesario señalar que la detección de rostros o de cualquier objeto no es cien por ciento preciso,
tampoco debes esperar que te permita diferenciar entre distintos tipos de rostros.   Lo que se logra con este ejercicio es
mostrar sobre una imagen tomada de una webcam el area en la cual se ha detectado un rostro humano.  Es un ejemplo
interesante que seguro disfrutarás.

OpenCV
OpenCV es una biblioteca fabulosa que te facilita el trabajo si estás interesado en crear aplicaciones que requieren de
reconocimiento y rastreo de objetos o rostros sobre imágenes o video en tiempo real.  En Windows su instalación es sencilla
y para ello debes dirigirte a la página de descarga del proyecto.

POLITÉCNICO DE SURAMÉRICA

Diplomados Virtuales ¡Gratis!


¡Inscríbete ya!

Desde luego, necesitas Java y en esta ocasión usaremos Eclipse para editar y hacer funcionar el ejemplo.

JDK 1.8 – [Link]


Eclipse NEON – [Link]
OpenCV 3.1 – [Link]

Buscar … Buscar

Páginas

C# – Leer archivo XML


C# Crear archivo XML
C# Crear archivos de texto
C# Leer archivo de texto
C++ Crear archivo de texto
C++ Leer archivo de texto
Comics e Imágenes
Ejemplos Básicos
Después de descargar y dar click en el archivo [Link]
[Link], una ventana de diálogo te preguntará donde deseas extraer Ejemplos C#
OpenCV, elige la ruta que desees y recuérdala, más tarde las usaremos.
OpenCV
Ejemplos C++
Ejemplos Java
Ejemplos Python
Ejemplos y Artículos
Java – FileUtils de Apache Commons IO
Java – Conexión a base de datos con JD
Java – Copiar archivos
Java – Crear archivo Excel
Java – Crear Archivo XML
Java – Crear archivo ZIP
Java – Crear archivos de texto
Java – Crear PDF desde XML con FOP
Java – Crear proyectos Maven en NetBea
Eclipse
Con gurar Eclipse
Java – El ciclo for
Suponiendo que ya conoces y tienes instalado Eclipse
Eclipse, debes ir al menú principal y seleccionar la opción: Window
Window >
Java – Json con Google Gson
Preferences.
Preferences
Java – Leer XML con SAX Parser
Java – Leer archivo Excel
Java – Leer archivo XML
Java – Leer archivo ZIP
Java – Leer un archivo de texto
Java – reCAPTCHA v2
Java – Reconocimiento de Rostros con O
Utilizamos cookies para asegurar que damos la mejor experiencia al usuario en nuestro sitio web. Si continúa utilizando este sitio asumiremos que está de acuerdo. Estoy de acuerdo

[Link] 1/9
8/2/2019 Java – Reconocimiento de Rostros con OpenCV – [Link]

Java – Renombrar un archivo


[Link]
PROGRAMACIÓN, CÓDIGO, HUMOR Y OTRAS HIERBAS.
EJEMPLOS JAVA EJEMPLOS PYTHON EJEMPLOS C# EJEMPLOS C++ PUBLICACIONES Y TUTORIALES
Libros Recomendados
LIBROS REC

Más Recursos
Preguntas Java
Python – Conexión a base de datos Mari
Python – Copiar archivos
Python – Crear Archivo XML
Python – Crear archivo ZIP

A continuación vamos a crear una librería de usuario nueva.  Buscamos la opción Java>Build Path>User Libraries>New.
Libraries>New Python – Crear archivos de texto
Python – Crear un archivo de Excel con p
Python – Crear un PDF con ReportLab
Python – Detección de rostros con Open
Python – Extraer archivos de un ZIP
Python – Leer archivo de Excel
Python – Leer archivo XML
Python – Leer un archivo de texto
Python – Renombrar un archivo
Tutoriales

Entradas recientes

Curiosidades en operaciones de punto o


Tips para programadores
Una de las mejores presentaciones de M
Learning
La presentación de Google Duplex en la G
Linus Torvals, la mente detrás de Linux
Netbeans – Accesos directos
Un diagrama casi completo de las Redes
Neuronales
Creamos una nueva librería de usuario y la llamamos opencv3.1 y damos enter, después seleccionamos la nueva librería y
Oracle moverá Java EE a la Fundación Ec
damos click en “Add
Add External JARs…“,
JARs…
El mapa de la ciencia de la computación
Pruebas

POLIT
DE
SURA

Diplomados
Virtuales ¡Gratis!
invierte sólo $66
¡Inscr
mil por el Diploma

En la carpeta de OpenCV busca el archivo opencv\build\java\[Link]


opencv\build\java\[Link] y selecciónalo.

Utilizamos cookies para asegurar que damos la mejor experiencia al usuario en nuestro sitio web. Si continúa utilizando este sitio asumiremos que está de acuerdo. Estoy de acuerdo

[Link] 2/9
8/2/2019 Java – Reconocimiento de Rostros con OpenCV – [Link]

[Link]
PROGRAMACIÓN, CÓDIGO, HUMOR Y OTRAS HIERBAS.
EJEMPLOS JAVA EJEMPLOS PYTHON EJEMPLOS C# EJEMPLOS C++ PUBLICACIONES Y TUTORIALES LIBROS REC

Una vez seleccionado el archivo correcto, podrás ver que opciones nuevas aparecen.  Selecciona “Native
Native library location“.
location

Da click en “Edit
Edit” y selecciona la carpeta “…opencv/build/java/x64
…opencv/build/java/x64“.  Da click en OK y terminamos.

Crear el proyecto en Eclipse


Al crear un nuevo proyecto en eclipse seleccionaremos la librería recién creada.

Puedes nombrar a tu proyecto como desees.

Utilizamos cookies para asegurar que damos la mejor experiencia al usuario en nuestro sitio web. Si continúa utilizando este sitio asumiremos que está de acuerdo. Estoy de acuerdo

[Link] 3/9
8/2/2019 Java – Reconocimiento de Rostros con OpenCV – [Link]

[Link]
PROGRAMACIÓN, CÓDIGO, HUMOR Y OTRAS HIERBAS.
EJEMPLOS JAVA EJEMPLOS PYTHON EJEMPLOS C# EJEMPLOS C++ PUBLICACIONES Y TUTORIALES LIBROS REC

Antes de dar click en Finish


Finish, agregaremos la librería que creamos, dando click en Next
Next y en la pestaña “Libraries
Libraries” damos click
nuevamente en la opción “Add
Add Library…“.
Library…

Elegimos la opción “User


User Library“.
Library

Y seleccionamos el check box de “opencv3.1


opencv3.1“.

Utilizamos cookies para asegurar que damos la mejor experiencia al usuario en nuestro sitio web. Si continúa utilizando este sitio asumiremos que está de acuerdo. Estoy de acuerdo

[Link] 4/9
8/2/2019 Java – Reconocimiento de Rostros con OpenCV – [Link]

[Link]
PROGRAMACIÓN, CÓDIGO, HUMOR Y OTRAS HIERBAS.
EJEMPLOS JAVA EJEMPLOS PYTHON EJEMPLOS C# EJEMPLOS C++ PUBLICACIONES Y TUTORIALES LIBROS REC

Veremos nuestra nueva librería agregada en lista del nuevo proyecto.

El resultado será como se muestra a continuación:

Ahora el código
Debes crear una clase llamada Principal y usar el siguiente código como contenido.

1 import [Link];
2 import [Link];
3 import [Link];
4 import [Link];
5 import [Link];
6 import [Link];
7 import [Link];
8 import [Link];
9 import [Link];
10 import [Link];
11 import [Link];
12 import [Link];
13 import [Link];
14 import [Link];
15 import [Link];
16 import [Link];
17 import [Link];
18 import [Link];
19 import [Link];
20 import [Link];
21
22 class PanelDeRostros extends JPanel {
23 private static final long serialVersionUID = 1L;
24 private BufferedImage imagen;
25
26 public PanelDeRostros() {
27 super();
28 }
29
Utilizamos cookies para asegurar que damos la mejor experiencia al usuario en nuestro sitio web. Si continúa utilizando este sitio asumiremos que está de acuerdo. Estoy de acuerdo
30 /*

[Link] 5/9
8/2/2019 Java – Reconocimiento de Rostros con OpenCV – [Link]
31 * Convierte y escribe una Matriz en un objeto BufferedImage
[Link]
32
33
*/
EJEMPLOS JAVA
public boolean convierteMatABufferedImage(Mat
PROGRAMACIÓN, CÓDIGO, HUMOR Y OTRAS HIERBAS.
EJEMPLOS
matriz) { PYTHON EJEMPLOS C# EJEMPLOS C++ PUBLICACIONES Y TUTORIALES LIBROS REC
34 MatOfByte mb = new MatOfByte();
35 [Link]("[Link]", matriz, mb);
36 try {
37 [Link] = [Link](new ByteArrayInputStream([Link]()));
38 } catch (IOException e) {
39 [Link]();
40 return false; // error
41 }
42 return true; // éxito
43 }
44
45 public void paintComponent(Graphics g) {
46 [Link](g);
47 if ([Link] == null)
48 return;
49 [Link]([Link], 10, 10, [Link](), [Link](), n
50 }
51 }
52
53 class DetectorRostros {
54 private CascadeClassifier clasificador;
55
56 public DetectorRostros() {
57 //Se lee el archivo Haar que le permite a OpenCV detectar rostros frontales en una
58 clasificador = new CascadeClassifier("C:/Users/decodigo/Documents/opencv/sources/da
59 if ([Link]()) {
60 [Link]("Error de lectura.");
61 return;
62 } else {
63 [Link]("Detector de rostros leido.");
64 }
65 }
66
67 public Mat detecta(Mat frameDeEntrada) {
68 Mat mRgba = new Mat();
69 Mat mGrey = new Mat();
70 MatOfRect rostros = new MatOfRect();
71 [Link](mRgba);
72 [Link](mGrey);
73 [Link](mRgba, mGrey, Imgproc.COLOR_BGR2GRAY);
74 [Link](mGrey, mGrey);
75 [Link](mGrey, rostros);
76 [Link]([Link]("Detectando %s rostros", [Link]().length)
77 for (Rect rect : [Link]()) {
78 //Se dibuja un rectángulo donde se ha encontrado el rostro
79 [Link](mRgba, new Point(rect.x, rect.y), new Point(rect.x + rect
80
81 }
82 return mRgba;
83 }
84 }
85
86 public class Principal {
87
88 public static void main(String arg[]) throws InterruptedException {
89 // Leyendo librería nativa
90 [Link](Core.NATIVE_LIBRARY_NAME);
91
92 // Se crea el JFrame
93 JFrame frame = new JFrame("Detección de rostros");
94 [Link](JFrame.EXIT_ON_CLOSE);
95
96 DetectorRostros detectorRostros = new DetectorRostros();
97 PanelDeRostros panel = new PanelDeRostros();
98 [Link](400, 400);
99 [Link]([Link]);
100 [Link](panel, [Link]);
101 [Link](true);
102
103 // Se crea una matriz que contendrá la imagen
104 Mat imagenDeWebCam = new Mat();
105 VideoCapture webCam = new VideoCapture(0);
106
107 if ([Link]()) {
108 [Link](500); // Se interrumpe el thread para permitir que la webcam s
109 while (true) {
110 [Link](imagenDeWebCam);
111 if (![Link]()) {
112 [Link](200); // Permite que la lectura se complete
113 [Link]([Link]() + 40, imagenDeWebCam.h
114 // Invocamos la rutina de opencv que detecta rostros sobre
115 imagenDeWebCam = [Link](imagenDeWebCam);
116 // Muestra la imagen
117 [Link](imagenDeWebCam);
118 [Link]();
119 } else {
120 [Link]("No se capturó nada");
121 break;
122 }
123 }
124 }
125 [Link](); // Se libera el recurso de la webcam
126 }
127 }

En este ejemplo hay varias cosas importantes que debes notar.

La primera de ellas es cuando leemos el archivo HAAR que contiene la información que usará OpenCV para detectar los
rostros en la imagen.  Es quizá el único cambio que tendrás que hacer en tu código, buscando el mismo archivo en tu
instalación de OpenCV
OpenCV.

54 clasificador = new CascadeClassifier("C:/Users/decodigo/Documents/opencv/sources/data/haarcascades/h

En estas líneas tomamos el control de la webcam:

105 VideoCapture webCam = new VideoCapture(0);

Utilizamos cookies para asegurar que damos la mejor experiencia al usuario en nuestro sitio web. Si continúa utilizando este sitio asumiremos que está de acuerdo. Estoy de acuerdo

[Link] 6/9
8/2/2019 Java – Reconocimiento de Rostros con OpenCV – [Link]

El argumento que pasamos es el índice con el que está registrada la webcam internamente. Si no te funciona a la primera
[Link]
prueba con 1.
PROGRAMACIÓN, CÓDIGO, HUMOR Y OTRAS HIERBAS.
EJEMPLOS JAVA EJEMPLOS PYTHON EJEMPLOS C# EJEMPLOS C++ PUBLICACIONES Y TUTORIALES LIBROS REC

Después, depositamos una sola imagen en el objeto imagenDeWebCam


imagenDeWebCam.

1 [Link](imagenDeWebCam);

El cual leemos constantemente en un ciclo while.

Lo interesante viene en las siguientes líneas de código:

110 // Invocamos la rutina de opencv que detecta rostros sobre la imagen obtenida por la webcam
111 imagenDeWebCam = [Link](imagenDeWebCam);
112 // Muestra la imagen
113 [Link](imagenDeWebCam);
114 [Link]();

En la función detecta ocurren varias cosas.

67 public Mat detecta(Mat frameDeEntrada) {


68 Mat mRgba = new Mat();
69 Mat mGrey = new Mat();
70 MatOfRect rostros = new MatOfRect();
71 [Link](mRgba);
72 [Link](mGrey);
73 [Link](mRgba, mGrey, Imgproc.COLOR_BGR2GRAY);
74 [Link](mGrey, mGrey);
75 [Link](mGrey, rostros);
76 [Link]([Link]("Detectando %s rostros", [Link]().length))
77 for (Rect rect : [Link]()) {
78 //Se dibuja un rectángulo donde se ha encontrado el rostro
79 [Link](mRgba, new Point(rect.x, rect.y), new Point(rect.x + rect.
80
81 }
82 return mRgba;
83 }
84 }

Se recibe el contenido de un solo frame de la webcam


webcam, se genera una copia del mismo en RGB y en escala de grises y se
deposita en las variables mRgba y mGrey
mGrey. La función detectMultiScale obtiene un arreglo de posibles rostros detectados (En
una sola imagen puede haber más de uno) y con la función [Link](..) se dibuja un rectángulo de color azul.

Para ver lo que hace el código sólo tienes ejecutar la clase Principal
Principal.

He usado una imagen cualquiera para mostrar el resultado en pantalla.

Utilizamos cookies para asegurar que damos la mejor experiencia al usuario en nuestro sitio web. Si continúa utilizando este sitio asumiremos que está de acuerdo. Estoy de acuerdo

[Link] 7/9
8/2/2019 Java – Reconocimiento de Rostros con OpenCV – [Link]

También puedes notar que la salida de la consola muestra todos los resultados exitosos de detección.
[Link]
PROGRAMACIÓN, CÓDIGO, HUMOR Y OTRAS HIERBAS.
EJEMPLOS JAVA EJEMPLOS PYTHON EJEMPLOS C# EJEMPLOS C++ PUBLICACIONES Y TUTORIALES LIBROS REC
Este método no es cien por ciento able, pero ahorra una gran cantidad de trabajo.  Si exploras la carpeta de los archivos
HAAR notarás que hay diversos archivos para detectar ojos, nariz y otras cosas más que pueden ser de utilidad para tus
proyectos.

Espero que disfrutes haciendo este ejemplo.

6 thoughts on “Java – Reconocimiento de Rostros con OpenCV”

alex
MARZO 17, 2017 A LAS 2:49 PM

la camara se bloque despues de un rato

RESPONDER

Joaquin
ABRIL 5, 2017 A LAS 11:22 PM

Hola me podrias compartir tu archivo, ya que me sale este error

utilice opencv 3.0.0

Error: no se ha encontrado o cargado la clase principal C:\Program

Bonita explicacion…te estaria agradecido si me pudieras apoyar con ese tema

RESPONDER

admin
ABRIL 28, 2017 A LAS 2:32 PM

Hola, el código usado es el mismo que el del primer bloque de este post. Saludos!

RESPONDER

gabriel
JUNIO 25, 2017 A LAS 4:38 AM

Muchas gracias por compartir, queria pedirte una pequeña ayuda, que puedo agregar para recortar el rostro y
guardarlo.

RESPONDER

Pedro Jornesbi
SEPTIEMBRE 12, 2017 A LAS 6:09 PM

Hola muy buen post. Quiero saber como puedo registrarme en el sitio.

RESPONDER

Ricardo
NOVIEMBRE 17, 2017 A LAS 9:33 PM

Tienes el codigo para la deteccion de ojos, nariz y boca?

RESPONDER

Deja un comentario
Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Comentario

Utilizamos cookies para asegurar que damos la mejor experiencia al usuario en nuestro sitio web. Si continúa utilizando este sitio asumiremos que está de acuerdo. Estoy de acuerdo

[Link] 8/9
8/2/2019 Java – Reconocimiento de Rostros con OpenCV – [Link]

[Link]
PROGRAMACIÓN, CÓDIGO, HUMOR Y OTRAS HIERBAS.
EJEMPLOS JAVA EJEMPLOS PYTHON EJEMPLOS C# EJEMPLOS C++ PUBLICACIONES Y TUTORIALES LIBROS REC

Nombre *

Correo electrónico *

Web

No soy un robot
reCAPTCHA
Privacidad - Condiciones

Publicar comentario

Utilizamos cookies para asegurar que damos la mejor experiencia al usuario en nuestro sitio web. Si continúa utilizando este sitio asumiremos que está de acuerdo. Estoy de acuerdo

[Link] 9/9

También podría gustarte