javaCV detectMultiScale с каскадом LBP не работает на физическом устройстве

Мое приложение для Android использует javaCV и вызывает функцию deteMultiScale() с каскадом 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;
    }

1 ответ

Только примечание, согласно документации OpenCV, флаги (такие как 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, Размер minSize = Размер (), Размер maxSize= Размер ()) Параметры:

  • cascade - каскад классификатора Хаара (только для OpenCV 1.x API). Его можно загрузить из файла XML или YAML с помощью Load(). Когда каскад больше не нужен, отпустите его, используя cvReleaseHaarClassifierCascade (& cascade).
  • image - Матрица типа CV_8U, содержащая изображение, в котором обнаружены объекты.
  • objects - Вектор прямоугольников, где каждый прямоугольник содержит обнаруженный объект.
  • scaleFactor - Параметр, указывающий, насколько уменьшается размер изображения при каждом масштабе изображения.
  • minNeighbors - Параметр, указывающий, сколько соседей должен иметь каждый прямоугольник-кандидат для его сохранения.
  • flags - Параметр с тем же значением для старого каскада, что и в функции cvHaarDetectObjects. Он не используется для нового каскада.
  • minSize - минимально возможный размер объекта. Объекты меньшего размера игнорируются.
  • maxSize - максимально возможный размер объекта. Объекты большего размера игнорируются.
Другие вопросы по тегам