2013-10-28 123 views
1

我有以下代碼來檢測人臉。JavaCV中的人臉檢測

public class FaceDetection { 


    public static final String XML_FILE = 
        " C:/opencv/data/haarcascades/haarcascade_frontalface_default.xml"; 


      public static void main(String[] args){ 

       IplImage img = cvLoadImage("C:/Users/Ioanna/Desktop/lena.png");  
       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); 

      }   

} 

當它運行時返回以下錯誤

OpenCV的錯誤:在未知功能,文件...... \ SRC \的OpenCV \模塊\ objdetect \ SRC \空指針(無效的分類器級聯) haar.cpp,line 1514 線程「main」中的異常java.lang.RuntimeException:...... \ src \ opencv \ modules \ objdetect \ src \ haar.cpp:1514:error:(-27)無效的分類器級聯

at com.googlecode.javacv.cpp.opencv_objdetect.cvHaarDetectObjects(Native Method) 
at com.googlecode.javacv.cpp.opencv_objdetect.cvHaarDetectObjects(opencv_objdetect.java:238) 
at FaceDetection.FaceDetection.detect(FaceDetection.java:32) 
at FaceDetection.FaceDetection.main(FaceDetection.java:24) 

有誰知道是什麼問題?

感謝

+0

的文件在您文件名以空格開頭 – berak

+0

非常感謝!我沒有注意到 – Ioanna

回答

0

複製鏈接C:/Users/Ioanna/Desktop/lena.png 並將其粘貼到類的文件,並複製鏈接C:/opencv/data/haarcascades/haarcascade_frontalface_default.xml 並將其粘貼到類

enter image description here

public static final String XML_FILE = "haarcascade_frontalface_default.xml"; 
IplImage img = cvLoadImage("lena.jpg");