带LBP级联的javaCV detectMultiScale不能在物理设备上工作



我的Android应用程序使用javaCV并调用detectMultiScale()函数与LBP级联来检测人脸。它在我的模拟器上完全正常工作。然而,当我试图在我的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;
    }

只是一个注意,根据OpenCV文档,标志(如CV_HAAR_FIND_BIGGEST_OBJECT | CV_HAAR_DO_ROUGH_SEARCH)不能与新的级联(如LBP)一起使用。

无效cascadecclassifier::detectMultiScale(const Mat&形象,vector&对象,double scaleFactor=1.1, int minNeighbors=3, int flags=0, Size minSize=Size(), Size maxSize=Size())参数:

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

相关内容

  • 没有找到相关文章

最新更新