Red de conocimiento informático - Aprendizaje de programación - Análisis de código fuente Opencv hdr

Análisis de código fuente Opencv hdr

Diagrama de estructura de todo el proyecto:

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

[java]Ver

plaincopyprint?

Paquete com.njupt.zhb.test;

Importar org.opencv.core.core;

Importar org.opencv.core.mat;

p>

Importar org.opencv.core.Mato frect;

Importar org.opencv.core.point;

Importar org.opencv.core.rect;

Importar org.opencv.core.point;

Importar org.opencv.core.rect;

p>

Importar opencv .

Importar org.opencv.GUI alta.

Importar org.objdetect. >//Detecta la cara en la imagen, dibuja un cuadro alrededor de la cara y escribe el resultado

//En "faceDetection.png".

//

Clase pública DetectFaceDemo {

Public void run(){

sistema println(" \nrun DetectFaceDemo. ");

System.out.println(getClass().get recurso(" lbpcascade _ frontal face . XML ").getPath());

//De referencia El Los archivos en cascada en los datos crean un detector de rostros

//directorio.

// detector de caras clasificador en cascada = nuevo clasificador en cascada(get class().get recurso(" lbpcascade _ frontal face . XML ").getPath());

// Mat image = high GUI . im read(getClass().getResource("lena.png ").getPath());

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

/*

*0 rostros detectados faceDetection.png Advertencia de libpng: imagen

*El ancho es cero en IHDR. Advertencia: la altura de la imagen en IHDR es cero

* error de libpng: datos IHDR no válidos

*/

//Entonces eliminaremos el primer carácter.

Cadena xmlfilePath=getClass(). obtener recurso ("lbpcascade_frontal face.XML"). obtenerRuta().

substring(1);

detector de rostros clasificador en cascada = nuevo clasificador en cascada (ruta de archivo XML);

imagen mat = GUI alta. Estoy leyendo(getClass().getResource("we . jpg ").getPath().substring(1));

//Detecta rostros en imágenes.

// MatOfRect es una clase contenedora especial de Rect.

Detecciones de rostros Mato frect = new Mato frect();

detector de rostros (imagen, detecciones de rostros fuera). (string . format(" Caras detectadas ", faceDetections.toArray(). length));

// Dibuja un cuadro delimitador alrededor de cada cara.

for(Rect Rect: detecciones de rostros. a matriz()){

Core.rectangle(imagen, nuevo punto(rect.x, rect.y), nuevo punto(rect .x rect.width, rect.y rect.height), nuevo escalar (0, 255, 0));

}

//Guardar detección visual.

string filename = " detección de rostros . png ";

system out . println(string . format("escribir s ", nombre de archivo)); >Highgui.imwrite(nombre de archivo, imagen);

}

}

Paquete com .nju pt zhb . >Importar org.opencv.core.core;

Importar org.opencv.core.mat;

Importar org.opencv.core.Mato frect;

Importar org.opencv.core.point;

Importar org.opencv.core.rect;

Importar org.opencv.core.scalar;

Importar organización .opencv.GUI alta.

Importar org.objdetect.

//

//Detectar personas en imágenes. dibuja un cuadro alrededor de la cara y escribe el resultado

//en "faceDetection.png".

//

Clase pública DetectFaceDemo {

Public void run(){

sistema println(" \nrun DetectFaceDemo. ");

System.out.println(getClass().

obtener recurso ("lbpcascade_frontal face.XML"). getPath());

//Crea un detector de rostros a partir del archivo en cascada en el material de referencia

//Directorio.

// detector de caras clasificador en cascada = nuevo clasificador en cascada(get class().get recurso(" lbpcascade _ frontal face . XML ").getPath());

// Mat image = high GUI . im read(getClass().getResource("lena.png ").getPath());

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

/*

*0 rostros detectados faceDetection.png Advertencia de libpng: imagen

*El ancho es cero en IHDR. Advertencia: la altura de la imagen en IHDR es cero

* error de libpng: datos IHDR no válidos

*/

//Entonces eliminaremos el primer carácter.

Cadena xmlfilePath=getClass(). obtener recurso ("lbpcascade_frontal face.XML"). obtenerRuta(). substring(1);

detector de rostros clasificador en cascada = nuevo clasificador en cascada (ruta de archivo XML);

imagen mat = GUI alta. Estoy leyendo(getClass().getResource("we . jpg ").getPath().substring(1));

//Detecta rostros en imágenes.

// MatOfRect es una clase contenedora especial de Rect.

Detecciones de rostros Mato frect = new Mato frect();

detector de rostros (imagen, detecciones de rostros fuera). (string . format(" Caras detectadas ", faceDetections.toArray(). length));

// Dibuja un cuadro delimitador alrededor de cada cara.

for(Rect Rect: detecciones de rostros. a matriz()){

Core.rectangle(imagen, nuevo punto(rect.x, rect.y), nuevo punto(rect .x rect.width, rect.y rect.height), nuevo escalar (0, 255, 0));

}

//Guardar detección visual.

string filename = " detección de rostros . png ";

system out . println(string . format("escribir s ", nombre de archivo)); >Highgui.imwrite(nombre de archivo, imagen);

}

}

3. Escribe una clase de prueba:

[ java. ]Ver

copia simpleimprimir?

Paquete com.njupt.zhb.test;

Clase pública TestMain {

Public static void main(String[] args) {

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

//Carga la biblioteca nativa.

sistema . loadlibrary(" opencv _ Java 246 ");

Nuevo DetectFaceDemo(). run();

}

}

//Resultado de la operación:

//Hola, OpenCV

//

//Ejecute DetectFaceDemo

///E:/eclipse_Jee/workspace/javaopenv246/bin/com/nju pt/zhb/test/lbpcascade_frontal face >Clase pública TestMain {

Public static void main(String[] args) {

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

//Carga la biblioteca nativa.

sistema . loadlibrary(" opencv _ Java 246 ");

Nuevo DetectFaceDemo(). run();

}

}

//Resultado de la operación:

//Hola, OpenCV

//

//Ejecute DetectFaceDemo

///E:/eclipse_Jee/workspace/javaopenv246/bin/com/nju pt/zhb/test/lbpcascade_frontal XML

//8 rostros detectados

//Escribe faceDetection.png