Estou usando JavaCv para localizar rostos em fotos. Chamo o metodo de localização dentro de um botão, quando executo o seguinte erro é mostrado:
[b][color=red]
OpenCV Error: Null pointer (NULL or empty buffer) in unknown function, file …\src\opencv\modules\core\src\persistence.cpp, line 2702
Exception in thread “AWT-EventQueue-0” java.lang.RuntimeException: …\src\opencv\modules\core\src\persistence.cpp:2702: error: (-27) NULL or empty buffer
[/color][/b]
Este é meu código
String novocaminho = "";
int i;
for (i = 0; i < imagem.length(); i++)
{
String x = imagem.substring(i, i);
if ("\\".equals(x))
{
novocaminho = novocaminho + "\\\\";
}
else
{
novocaminho = novocaminho + x;
}
}
origImg = (IplImage) cvLoad(novocaminho);
// Pré-carga do módulo opencv objdetect
Loader.load(opencv_objdetect.class);
// converte para escala de cinza
IplImage Img_cinza = IplImage.create(origImg.width(),origImg.height(), IPL_DEPTH_8U, 1);
cvCvtColor(origImg, Img_cinza, CV_BGR2GRAY);
// diminui o tamanho da imagem para a
// detecção ser mais rápida
IplImage Img_peq = IplImage.create(Img_cinza.width()/SCALE,Img_cinza.height()/SCALE, IPL_DEPTH_8U, 1);
cvResize(Img_cinza, Img_peq, CV_INTER_LINEAR);
// Ajusta a equalização de histograma,
//ajusta o contraste e o ruido
IplImage Img_equ = IplImage.create(Img_peq.width(),Img_peq.height(), IPL_DEPTH_8U, 1);
cvEqualizeHist(Img_peq, Img_equ);
// Cria um armazenamento temporario durante a detecção
CvMemStorage Arm_temp = CvMemStorage.create();
// instancia o classificador de detecção de rosto
CvHaarClassifierCascade cascade = new CvHaarClassifierCascade(cvLoad(CASCADE_FILE));
CvSeq faces = cvHaarDetectObjects( Img_equ, cascade, Arm_temp,1.1, 3, CV_HAAR_DO_CANNY_PRUNING);
cvClearMemStorage(Arm_temp);
// desenhar retangulos amarelo
int total = faces.total();
for (int x = 0; x < total; x++) {
CvRect r = new CvRect(cvGetSeqElem(faces, i));
cvRectangle(origImg, cvPoint( r.x()*SCALE, r.y()*SCALE ),
cvPoint( (r.x() + r.width())*SCALE,(r.y() + r.height())*SCALE ),CvScalar.YELLOW, 9, CV_AA, 0);
//Desfazer dimensionamento da imagem para calcular as coordenadas retangulo
}
//Salvando Imagem
if (total > 0) {
cvSaveImage(OUT_FILE, origImg);
}
//Mostrando imagem
ImageIcon image = new ImageIcon("C:\\test\\2.jpg");
jLabel2.setIcon(new ImageIcon(image.getImage().getScaledInstance(250,254, Image.SCALE_DEFAULT)));