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