Análisis de código fuente Opencv hdr
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 >
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