Модуль 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:

  1. Запустить cmake-gui
  2. Выберите папку с исходным кодом opencv и папку, в которой будут собраны двоичные файлы (2 верхние формы интерфейса)
  3. Нажмите кнопку настройки. вы увидите все параметры сборки opencv в центральном интерфейсе
  4. Просмотрите параметры и найдите форму с именем OPENCV_EXTRA_MODULES_PATH (используйте форму поиска, чтобы быстро сосредоточиться на ней)
  5. Завершите этот OPENCV_EXTRA_MODULES_PATH, указав правильный путь к значению / modules, используя кнопку обзора.
  6. Нажмите кнопку конфигурации, а затем кнопку генерации (в первый раз вас спросят, какой стиль make-файла использовать)
  7. Соберите ядро ​​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();
Другие вопросы по тегам