Модуль contrib отсутствует в opencv 3.0?
Я использую OpenCV 3.0 beta.
Я пытался создать распознаватель лица с помощью createLBPHFaceRecognizer(); класс как,
**Ptr <FaceRecognizer> model = createLBPHFaceRecognizer();**
ошибка у меня есть
**error: 'createLBPHFaceRecognizer' was not declared in this scope**
Я исследовал и обнаружил, что класс существует в contrib
модуль opencv2
(opencv2/contrib/contrib.hpp) в предыдущих версиях OpenCV
Но этот модуль не доступен в бета-версии opencv 3.0. Так, где классы распознавателя определены в opencv 3.0?
Если они не определены, как мы можем добавить этот модуль в дополнение к существующим модулям?
2 ответа
Вам придется скачать и собрать репозиторий opencv_contrib.
после запуска cmake, make, make install,
#include <opencv2/face.hpp>
// note the additional namespace:
cv::Ptr <cv::face::FaceRecognizer> model = cv::face::createLBPHFaceRecognizer();
// proceed as usual
С https://github.com/opencv/opencv_contrib:
- Запустить cmake-gui
- Выберите папку с исходным кодом opencv и папку, в которой будут собраны двоичные файлы (2 верхние формы интерфейса)
- Нажмите кнопку настройки. вы увидите все параметры сборки opencv в центральном интерфейсе
- Просмотрите параметры и найдите форму с именем OPENCV_EXTRA_MODULES_PATH (используйте форму поиска, чтобы быстро сосредоточиться на ней)
- Завершите этот OPENCV_EXTRA_MODULES_PATH, указав правильный путь к значению / modules, используя кнопку обзора.
- Нажмите кнопку конфигурации, а затем кнопку генерации (в первый раз вас спросят, какой стиль make-файла использовать)
- Соберите ядро opencv с помощью выбранного вами метода (создайте и выполните установку, если вы выбрали Unix makfile на шаге 6)
Для запуска необходимо добавить флаги компоновщика для модулей contrib, чтобы использовать их в вашем коде /IDE. Например, чтобы использовать модуль aruco, будет добавлен флаг "-lopencv_aruco".
На моей установке Debian
$ dpkg -l libopencv-contrib-dev
ii libopencv-contrib-dev:amd64 3.2.0+dfsg-6 amd64 development files for libopencv-contrib3.2
позволяет мне использовать добавленные модули только с дополнительным включением. Например:
#include <opencv2/opencv.hpp>
#include <opencv2/face.hpp>
auto model = cv::face::createLBPHFaceRecognizer();