【发布时间】:2014-03-07 01:08:51
【问题描述】:
我使用了本教程中的代码:http://opencvlover.blogspot.co.uk/2012/11/face-detection-in-javacv-using-haar.html
已稍作修改以读取不同的图像,并在尝试人脸检测之前显示此图像(第 14 行)。通过这个我可以确认图片加载正确。
错误发生在后面的第 23 行。这是完整的错误代码:
OpenCV Error: Null pointer (Invalid classifier cascade) in cvHaarDetectObjectsForROC,file ..\..\..\..\opencv\modules\objdetect\src\haar.cpp, line 1514
Exception in thread "main" java.lang.RuntimeException: ..\..\..\..\opencv\modules\objdetect\src\haar.cpp:1514: error: (-27) Invalid classifier cascade in function cvHaarDetectObjectsForROC
at com.googlecode.javacv.cpp.opencv_objdetect.cvHaarDetectObjects(Native Method)
at com.googlecode.javacv.cpp.opencv_objdetect.cvHaarDetectObjects(opencv_objdetect.java:238)
at FaceDetection.detect(FaceDetection.java:23)
at FaceDetection.main(FaceDetection.java:15)
这是我的完整程序:
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_objdetect.*;
public class FaceDetection{
public static final String XML_FILE =
"resources/haarcascade_frontalface_default.xml";
public static void main(String[] args){
IplImage img = cvLoadImage("pic.jpg");
cvShowImage("",img);cvWaitKey(0);
detect(img);
}
public static void detect(IplImage src){
CvHaarClassifierCascade cascade = new
CvHaarClassifierCascade(cvLoad(XML_FILE));
CvMemStorage storage = CvMemStorage.create();
CvSeq sign = cvHaarDetectObjects(
src,
cascade,
storage,
1.5,
3,
CV_HAAR_DO_CANNY_PRUNING);
cvClearMemStorage(storage);
int total_Faces = sign.total();
for(int i = 0; i < total_Faces; i++){
CvRect r = new CvRect(cvGetSeqElem(sign, i));
cvRectangle (
src,
cvPoint(r.x(), r.y()),
cvPoint(r.width() + r.x(), r.height() + r.y()),
CvScalar.RED,
2,
CV_AA,
0);
}
cvShowImage("Result", src);
cvWaitKey(0);
}
}
有谁知道是什么导致了这个错误,或者如何解决它?谢谢!
【问题讨论】:
-
你检查过你是否导入了你的haar分类器吗?听起来像是路径错误。
-
不,我该如何实现?我已经将openCV库包含在项目中,我需要单独导入部件吗?
-
我是否只需要检查文件是否存在,将某些内容单独包含到项目中,还是被遗忘的声明?
-
抱歉回复晚了。请查看我的答案以获取更多详细信息。
标签: java opencv face-detection haar-wavelet haar-classifier