Обнаружение лица с помощью OpenCV для не фронтальных изображений
Я пытаюсь использовать opencv для обнаружения лиц. Лица не лобовые, камера захватывает лица сбоку, поэтому просматривается только один глаз и часть рта. Я попробовал HaarDetectObjects с несколькими конфигурациями без получения выгоды. Я изменил каскад, и я тестировал:
haarcascade_frontalface_default.xml, haarcascade_frontalface_alt.xml, haarcascade_profileface.xml с очень плохими результатами. Есть ли другие лучшие каскады? Есть ли другие предложения?
Спасибо
Ответы
Ответ 1
Теперь у вас в OpenCV новый каскад LBP для профилей, созданный Вадимом Писаревским:
https://github.com/Itseez/opencv/blob/master/data/lbpcascades/lbpcascade_profileface.xml
По-видимому, он обнаруживает только правые профили, поэтому, чтобы обнаружить все грани профиля, нужно выполнить второй шаг с переворачиванием изображения.
Ответ 2
Каскадные файлы, на которые вы ссылались (например, aarcascade_frontalface_default.xml, haarcascade_frontalface_ml.xml, haarcascade_profileface.xml), создаются с использованием полных фронтальных граней для обнаружения полных фронтальных граней. Таким образом, половина лица, очевидно, не будет правильно распознана как правильная форма для компьютера.
В этой ситуации вам может понадобиться тренировать OpenCV, чтобы распознать ваш объект интереса, который в этом случае является "половиной лица". В жаргоне OpenCV он известен как " HaarTraining '. Используйте this, this и эта статья в качестве отправной точки для начала обучения.
Как только вы подготовили OpenCV, используя ваши данные (например, много разных изображений половины лица), вы получите готовый XML файл каскада, который вы можете подключить к своему собственному коду, чтобы обнаружить половину лица.
Удачи!