Edit:
Просто чтобы уведомить любого, кто посещает этот сайт. Я написал пример кода для распознавания лиц в видео, используя мою библиотеку libfacerec:
Оригинальный пост:
Полагаю, ваша проблема в следующем. Вы использовали Cascade Classifier cv :: CascadeClassifier , поставляемый с OpenCV, для обнаружения и извлечения лиц из изображений. Теперь вы хотите выполнить распознавание лица на изображениях.
Вы хотите использовать Eigenfaces для распознавания лиц. Итак, первое, что вам нужно сделать, это изучить Eigenfaces из изображений, которые вы собрали. Я переписал Eigenfaces class , чтобы вы упростили его. Чтобы узнать собственные лица, просто передайте вектор с изображениями ваших лиц и соответствующими метками (субъектом) либо Eigenfaces :: Eigenfaces , либо Eigenfaces :: compute . Убедитесь, что все ваши изображения имеют одинаковый размер, вы можете использовать cv :: resize , чтобы гарантировать это.
Как только вы вычислили Eigenfaces, вы можете получить прогнозы из вашей модели. Просто вызовите Eigenfaces ::вести прогноз в вычисляемой модели. main.cpp показывает, как использовать класс и его методы (для прогнозирования, проекции, восстановления изображений), а вот , как получить прогноз для изображения .
Теперь я вижу, где твоя проблема. Вы используете старый OpenCV C API. Это затрудняет взаимодействие с новым API OpenCV2 C ++, в котором написан мой код. Не оскорбляйте, но если вы хотите взаимодействовать с моим кодом, вам лучше использовать API OpenCV2 C ++. Я не могу дать руководство по изучению C ++ и API OpenCV2 здесь, есть много документации, идущей с OpenCV. Хорошее начало - шпаргалка OpenCV C ++ (также доступна по адресу http://opencv.willowgarage.com/) или справочное руководство OpenCV.
Для распознавания изображений с помощью каскадного детектора я повторяю: сначала изучите модель Eigenfaces с людьми, которых вы хотите узнать, это показано в примере с моим кодом. Затем вам нужно получить область интереса (ROI), это грань, прямоугольник, который выводит каскадный детектор. Наконец, вы можете получить прогноз для ROI из модели Eigenfaces (вы ее вычислили выше), это показано в примере с моим кодом. Возможно, вам придется преобразовать изображение в оттенки серого, но это все. Вот как это делается.