Я пытаюсь реализовать программу распознавания лиц с помощью входа с веб-камеры, используя детектор лиц Viola-Jones в OpenCV, и он работает нормально, за исключением того, что он становится примерно в 10 раз медленнее, когда в кадре не обнаружено лицо.
Это действительно странно, потому что если в кадре нет лица, большинство окон будут отклонены на более ранних стадиях каскада, и я думаю, что это должно быть немного быстрее (НЕ МЕДЛЕННО!).
Я использую функцию DetectiveMultiScale (а не функцию cvHaarDetectObjects) по некоторым причинам, но я не думаю, что это должно иметь какое-либо значение.
Кто-нибудь может дать мне совет по этой проблеме, пожалуйста?
Заранее спасибо.
Вы пытались добавить минимальный и максимальный размер обнаруживаемого прямоугольника лица?
Вы также можете проверить значение шкалы пирамиды, оно должно быть> 1, и если оно слишком медленное, попробуйте использовать более высокое значение, обнаружение будет не таким хорошим, но оно будет быстрее.
cv::CascadeClassifier cascade;
// ... init classifier
cv::Mat grayImage;
// ... set image
std::vector<cv::Rect> > results;
cv::Size minSize(60,60);
cv::Size maxSize(80,80);
int minNeighbors= 3; // edited
float pyramidScale = 1.1f;
cascade.detectMultiScale(grayImage, results, pyramidScale, minNeighbors,
0 , minSize, maxSize);