Deteccion de Rostros en Java con OpenCV – Primer Programa

Deteccion de Rostros en Java con OpenCV – Primer Programa

En este Articulo veremos como crear una Deteccion de Rostros en Java con OpenCV, crearemos nuestro primer programa con estos dos lo que nos servira de base para futuros proyectos de vision por computadora en java. Cabe decir que OpenCV tiene interfaces tambien para C++, C y python pero por ahora nos centraremos en Java, pero mas adelante veremos su implementacion en otros lenguajes de programacion como C++ y Python. Comenzemos…

Requerimientos:

Desarrollo

Para comenzar lo primero sera abrir eclipse y crear un nuevo proyecto para esto vamos a File -> New -> Java Project

Deteccion de rostros en java con opencv 1

escribimos un nombre de proyecto, en mi caso lo llamare HolaMundoOpenCV-Java y finalizamos
Crearemos un nuevo paquete, lo llamaremos como queramos yo lo llame visionporcompuadora
Crearemos una nueva clase dentro de este paquete, yo la llame Main, y nos quedara asi:

Deteccion de rostros en java con opencv 2

Ahora Vamos a agregar la libreria de OpenCV a nuestro proyecto para lo que hacemos click derecho sobre nuestro proyecto en el workspace y seleccionamos
Properties, nos cambiamos a Java Build Path

Deteccion de rostros en java con opencv 3

Damos Click en Add Library, seleccionamos user Library y seleccionamos next


¿Sabías que?

¿Necesitas aprender algo nuevo ? Ve a Udemy, busca el tema del que quieres aprender, selecciona el curso para ti y continua con tu aprendizaje.

Udemy

Deteccion de rostros en java con opencv 4

Damos click a User Libraries y seleecionamos New

Deteccion de rostros en java con opencv 5

Escribimos un nombre y aceptamos

Deteccion de rostros en java con opencv 6

Ahora agregaremos el jar de la libreria de OpenCV, damos click en Add External Jar -> y vamos a buildjava y seleccionamos opencv-246.jar en mi caso es «C:opencvbuildjavaopencv-256.jar»

Deteccion de rostros en java con opencv 7

Nos queda esta pantalla
Ahora damos dos click sobre «native Library Location» y seleccionamos la siguiente ruta buildjavax86 esto en caso de que tu sistema sea de 32 bits en caso
contrario selecciona x64, en mi caso seleccione la ruta «C:opencvbuildjavax86»
Te deberia quedar asi

Deteccion de rostros en java con opencv 8

Ahora solo aceptamos todas las ventanas hasta volver a la interfaz de eclipse que ahora luce asi:

Deteccion de rostros en java con opencv 9
Vamos a abrir la carpeta de nuestro proyecto y agregaremos una carpeta llamada resources (puedes llamarla como quieras) y dentro guardare los siguiente:

  • Imagen a utilizarDeteccion de rostros en java con opencv grace
  • Archivo llamado «lbpcascade_frontalface.xml» localizado en tu carpeta de opencv en datalbpcascades

Una vez que cuentas con estos archivos escribe el siguiente codigo fuente en tu clase en eclipse


package visionporcomputadora;

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfRect;
import org.opencv.core.Point;
import org.opencv.core.Rect;
import org.opencv.core.Scalar;
import org.opencv.highgui.Highgui;
import org.opencv.objdetect.CascadeClassifier;

class DetectFaceDemo {
public void run() {
System.out.println("nCorriendo HolaMundo con OpenCV en java");

CascadeClassifier faceDetector = new CascadeClassifier("C:/Users/Jonathan/workspace/HolaMundoOpenCV-Java/resources/lbpcascade_frontalface.xml");
Mat image = Highgui.imread("C:/Users/Jonathan/workspace/HolaMundoOpenCV-Java/resources/grace.jpg");

MatOfRect faceDetections = new MatOfRect();
faceDetector.detectMultiScale(image, faceDetections);

System.out.println(String.format("Rostros detectados: %s", faceDetections.toArray().length));

for (Rect rect : faceDetections.toArray()) {
Core.rectangle(image, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 255, 0));
}

String filename = "ImagenConRostros.png";
System.out.println(String.format("Guardando Imagen %s", filename));
Highgui.imwrite(filename, image);
}
}

public class Main {
public static void main(String[] args) {
System.loadLibrary("opencv_java246");
new DetectFaceDemo().run();
}
}

Recuerda que debes cambiar algunas cosas como:

  • el nombre de tu paquete en «package visionporcomputadora;» si es que no pusiste ese nombre
  • la rutas a lbpcascade_frontalface.xml
  • la rutas a grace.jpg

Ejecutando este programa deberias ahora tener una imagen nueva en tu carpeta de proyecto:

Deteccion de rostros en java con opencv 11

que tiene la deteccion de rostros correctamente

Deteccion de rostros en java con opencv grace2
Visto – Deteccion de Rostros en Java con OpenCV – Primer Programa

Clic para valorar esta información
[Total: 0 Promedio: 0]