opencv 3.0 中缺少 contrib 模块?

contrib module missing in opencv 3.0?

我正在使用 OpenCV 3.0 测试版。

我尝试使用 createLBPHFaceRecognizer() 创建人脸识别器; class 作为,

   **Ptr <FaceRecognizer> model =  createLBPHFaceRecognizer();**

我的错误是

   **error: 'createLBPHFaceRecognizer' was not declared in this scope**

我研究了一下,发现class存在于opencv2的contrib模块中 (opencv2/contrib/contrib.hpp) 在以前版本的 OpenCV

但是这个模块在 opencv 3.0 beta 中不可用。 那么opencv 3.0中定义的识别器class在哪里呢?

如果没有定义,我们如何在现有模块之外添加这个模块?

您必须下载并构建 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. Selectopencv源代码文件夹和二进制文件所在文件夹 将构建(界面的2个上层形式)
  3. 按配置按钮。你会看到所有的opencv构建 中央界面参数
  4. 浏览参数并查找名为 OPENCV_EXTRA_MODULES_PATH(使用搜索表单快速关注 它)
  5. 通过正确的路径名完成此 OPENCV_EXTRA_MODULES_PATH 使用其浏览按钮的 /modules 值。
  6. 按配置按钮,然后按生成按钮( 第一次,系统会询问您使用哪种 makefile 样式)
  7. 使用您选择的方法构建opencv核心(make和make 如果您在步骤 6 中选择了 Unix makfile,请安装)

对于 运行,需要添加贡献模块的链接器标志才能在您的 code/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();