Erro quando uso o CvHaarDetectObjects

3 respostas
Luanaas

Boa tarde galera, estou usando o cvHaarDetectObjects para localizar o nariz de uma pessoa, porem estou recebendo o seguinte erro

[color=red]OpenCV Error: Null pointer (Invalid classifier cascade) in unknown function, file ..\..\..\src\opencv\modules\objdetect\src\haar.cpp, line 1495
Exception in thread "main" java.lang.RuntimeException: ..\..\..\src\opencv\modules\objdetect\src\haar.cpp:1495: error: (-27) Invalid classifier cascade

at com.googlecode.javacv.cpp.opencv_objdetect.cvHaarDetectObjects(Native Method)
at com.googlecode.javacv.cpp.opencv_objdetect.cvHaarDetectObjects(opencv_objdetect.java:244)
at opencv123.Opencv123.main(Opencv123.java:45) [/color]

segue meu código
package opencv123;

import com.googlecode.javacv.JavaCvErrorCallback;
import com.googlecode.javacv.cpp.opencv_core.CvMemStorage;
import com.googlecode.javacv.cpp.opencv_core.CvRect;
import com.googlecode.javacv.cpp.opencv_core.CvScalar;
import com.googlecode.javacv.cpp.opencv_core.CvSeq;
import com.googlecode.javacv.cpp.opencv_core.IplImage;
import static com.googlecode.javacv.cpp.opencv_core.*;
import static com.googlecode.javacv.cpp.opencv_highgui.*;
import static com.googlecode.javacv.cpp.opencv_imgproc.CV_BGR2GRAY;
import static com.googlecode.javacv.cpp.opencv_imgproc.cvCvtColor;
import com.googlecode.javacv.cpp.opencv_objdetect.CvHaarClassifierCascade;
import static com.googlecode.javacv.cpp.opencv_objdetect.cvHaarDetectObjects;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;



public class Opencv123 {

  private static final String CASCADE_FILE = "C:\\opencv\\data\\haarcascades\\Nariz.xml";
 
  public static void main(String[] args) throws Exception {
      new JavaCvErrorCallback().hashCode();
           
 
     BufferedImage imagem = ImageIO.read(new File("eu.jpg"));
  
     IplImage image2 = IplImage.createFrom(imagem); 
    
            
    IplImage grayImage2 = cvCreateImage(cvGetSize(image2), 01, 1);
    
    
    cvCvtColor(image2, grayImage2, CV_BGR2GRAY);
 
    CvMemStorage storage = CvMemStorage.create();
 
   
    CvHaarClassifierCascade cascade = new CvHaarClassifierCascade(cvLoadImage(CASCADE_FILE));
 
   
    CvSeq faces = cvHaarDetectObjects(grayImage2, cascade, storage, 1.1, 1, 0);
 
     for (int i = 0; i < faces.total();i++) {
      CvRect r = new CvRect(cvGetSeqElem(faces, i));
      cvRectangle(image2, cvPoint(r.x(), r.y()),
      cvPoint(r.x() + r.width(), r.y() + r.height()), CvScalar.YELLOW, 1, CV_AA, 0);
    }
 
    BufferedImage c =  image2.getBufferedImage();
    
    
    ImageIO.write(c, "jpg", new File("eu2.jpg"));
  }
}

Alguém saberia me dizer o porque desse erro ?

3 Respostas

alanrodrigues

parece q ta dando erro no xml…
testa com os cascades.xml padrão…

Luanaas

alanrodrigues ja tentei usar o “haarcascade_mcs_nose.xml” que o proprio opencv trás, mas também está dando o mesmo erro.

Luanaas

a linha no código

está correta ?

Criado 3 de fevereiro de 2013
Ultima resposta 12 de fev. de 2013
Respostas 3
Participantes 2