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 - максимально возможный размер объекта. Объекты большего размера игнорируются.