具有LBP级联的javaCV detectMultiScale在物理设备上不起作用

时间:2013-01-18 21:08:30

标签: android opencv face-detection javacv

我的Android应用程序使用javaCV并使用LBP级联调用detectMultiScale()函数来检测面部。它在我的模拟器上完全正常。但是,当我试图在我的HTC Incredible S上测试它时,它返回0,无法检测到任何脸!任何人都可以给我一些提示,为什么它不起作用?非常感谢你的帮助!!!

这是我的面部检测代码:

    CASCADE_FILE = working_Dir.getAbsolutePath() + "/lbpcascade_frontalface.xml";

    public static CvRect getFaceWithLBP(IplImage grayFaceImg)
    {
         CascadeClassifier cascade = new CascadeClassifier(CASCADE_FILE);
         CvRect facesdetection = new CvRect(null);

         cascade.detectMultiScale(grayFaceImg, facesdetection, 1.1, 2, CV_HAAR_FIND_BIGGEST_OBJECT | CV_HAAR_DO_ROUGH_SEARCH, 
                             new CvSize(), new CvSize(grayFaceImg.width(), grayFaceImg.height()));  

         return facesdetection;
    }

1 个答案:

答案 0 :(得分:1)

只需注意,根据the OpenCV documentation,标志(例如CV_HAAR_FIND_BIGGEST_OBJECT | CV_HAAR_DO_ROUGH_SEARCH)不能与新的级联(如LBP级联)一起使用。

  

void CascadeClassifier :: detectMultiScale(const Mat& image,vector& objects,double scaleFactor = 1.1,int minNeighbors = 3,int flags = 0,size minSize = Size(),Size maxSize = Size())   参数:

     
      
  • 级联 - Haar分类器级联(仅限OpenCV 1.x API)。它可以使用Load()从XML或YAML文件加载。当不再需要级联时,使用cvReleaseHaarClassifierCascade(& cascade)释放它。
  •   
  • image - 包含检测到对象的图像的CV_8U类型的矩阵。
  •   
  • 对象 - 矩形矢量,其中每个矩形包含检测到的对象。
  •   
  • scaleFactor - 指定每个图像比例缩小图像尺寸的参数。
  •   
  • minNeighbors - 参数指定每个候选矩形应保留多少个邻居。
  •   
  • flags - 与函数cvHaarDetectObjects中的旧级联具有相同含义的参数。 它不用于新的级联。
  •   
  • minSize - 最小可能的对象大小。小于的对象将被忽略。
  •   
  • maxSize - 最大可能的对象大小。大于该值的对象将被忽略。
  •