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:
- OpenCV Instalado – como instalar?
- Eclipse
Desarrollo
Para comenzar lo primero sera abrir eclipse y crear un nuevo proyecto para esto vamos a File -> New -> Java Project

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:

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

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

¿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
Damos click a User Libraries y seleecionamos New

Escribimos un nombre y aceptamos

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»

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

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

- Imagen a utilizar
- 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:

que tiene la deteccion de rostros correctamente
