Red de conocimiento informático - Material del sitio web - Cómo desarrollar el reconocimiento facial dinámico de Java

Cómo desarrollar el reconocimiento facial dinámico de Java

1. Configuración del entorno

La estructura de todo el proyecto

2 Escriba DetectFaceDemo.java, el código es el siguiente:

[java] ver copia simple<. /p>

paquete com.njupt.zhb.test;

importar org.opencv.core.Core

importar org.opencv.core.Mat; >

importar org.opencv.core.MatOfRect;

importar org.opencv.core.Point

importar org.opencv.core.Rect

importar org.opencv.core.Scalar

importar org.opencv.highgui.org.opencv.objdetect.CascadeClassifier

//

/ / Detecta la cara, dibuja un cuadro alrededor y escribe el resultado en "faceDetection.png".

/

clase pública DetectFaceDemo {

public void run() {

System.out.println("/nRunning DetectFaceDemo"

System.out.println("/nRunning DetectFaceDemo");

System.out.println("/nRunning DetectFaceDemo").println(getClass().getResource(); "lbpcascade_frontalface.xml").getPath());

// Crea un detector de rostros a partir de un archivo en cascada en el directorio de recursos

//.

//CascadeClassifier faceDetector = new CascadeClassifier(getClass().getResource("lbpcascade_frontalface.xml"));

// Crea un detector de rostros a partir de un archivo en cascada.

//Mat image = Highgui.Imread(getClass().getResource("lbpcascade_frontalface.xml"));

// Crea un detector de rostros a partir de un archivo en cascada.

imread(getClass().getResource("lena.png").getPath());

//Nota: La ruta del programa fuente imprime un '/' adicional, por lo que siempre aparece el siguiente error ocurre

/*

* Se detectaron 0 caras escribiendo faceDetection.png Advertencia de libpng: Imagen

* El ancho es cero en IHDR Advertencia de libpng: Advertencia de libpng: Altura de la imagen es cero en IHDR

* error de libpng: datos IHDR no válidos

*/

Cadena xmlfilePath=getClass().getResource("lbpcascade_frontalface.xml").getPath().

CascadeClassifier faceDetector = nuevo CascadeClassifier faceDetector = nuevo CascadeClassifier(xmlfilePath

Mat image = Highgui.imread(getClass().getResource("we.jpg").getPath().substring (1); ));

// Detecta rostros en imágenes.

// Detecta rostros en imágenes. Detectar rostros en imágenes.

// MatOfRect es una clase contenedora especial de Rect.

MatOfRect faceDetections = new MatOfRect();

faceDetector.detectMultiScale(imagen, faceDetections

System.out.println(String.format("Detectado); s faces", faceDetections. toArray().length));

// Dibuja un cuadro delimitador alrededor de cada cara.

for (Rect rect: faceDetections.toArray()) {

Core.rectangle( imagen, nuevo Punto(rect.x, rect.y), nuevo Punto(rect.x rect.width, rect.y rect.height), new Scalar(0, 255, 0));

}

// Guarda la imagen.

// Guardar inspección visual.

String filename = "faceDetection.png"

System.out.println(String.format("Escribiendo s", nombre de archivo)); .out.println(String.format("Escribiendo s", nombre de archivo));

Highgui.imwrite(nombre de archivo, imagen

} // Guardar detección visual.

}

3. Escribir clase de prueba:

[java] ver copia simple

paquete com.njupt.zhb.test <; /p>

clase pública TestMain {

public static void main(String[] args) {

System.out.println("Hola, OpenCV"); p>

p>

// Carga la biblioteca nativa.

System.loadLibrary("opencv_java246");

new DetectFaceDemo().run(); /p>

} //Carga la biblioteca local.

}

/// Hola, OpenCV. frontalface.xml

///Detectadas 8 caras

///Escribiendo faceDetection.png