OpenCV 3.0中缺少contrib模块?

9

我正在使用OpenCV 3.0 beta。

我尝试使用createLBPHFaceRecognizer()类来创建人脸识别器,代码如下:

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

我遇到的错误是:
   **error: 'createLBPHFaceRecognizer' was not declared in this scope**

我进行了研究并发现,在早期的OpenCV版本中,该类存在于opencv2的contrib模块(opencv2/contrib/contrib.hpp)中。但是在opencv 3.0 beta中,该模块不可用。那么在opencv 3.0中,识别器类定义在哪里呢?如果它们未被定义,我们如何将此模块添加到现有模块中呢?
3个回答

9
你需要下载并构建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

1
你需要在主要的opencv目录中添加opencv_contrib模块到cmake中,方法是-DOPENCV_EXTRA_MODULES_PATH=<opencv_contrib>/modules,然后重新构建主要的opencv仓库,不要分开构建。 - berak
谢谢。如何在cmake-GUI中添加此路径“DOPENCV_EXTRA_MODULES_PATH”? - balajichinna
点击“grouped”,-> opencv -> OPENCV_EXTRA_MODULES_PATH - berak
好的...你能告诉我使用Mingw构建的简单步骤吗? - balajichinna
我按照指示编译了opencv_contrib,但仍然找不到任何contrib.hpp。 - nafsaka
显示剩余5条评论

0

来自https://github.com/opencv/opencv_contrib:

  1. 启动cmake-gui
  2. 选择opencv源代码文件夹和二进制文件将被构建的文件夹(界面上方的两个表单)
  3. 按下配置按钮。您将在中央界面中看到所有opencv构建参数
  4. 浏览参数并查找名为OPENCV_EXTRA_MODULES_PATH的表单(使用搜索表单快速聚焦它)
  5. 使用其浏览按钮,通过正确的路径名完成此OPENCV_EXTRA_MODULES_PATH到/modules值。
  6. 按下配置按钮,然后按下生成按钮(第一次,您将被要求选择使用哪种makefile样式)
  7. 使用您选择的方法构建opencv核心(如果您在步骤6中选择了Unix makfile,则使用make和make install)

要运行,需要添加链接器标志以使用代码/IDE中的contrib模块。例如,要使用aruco模块,将添加“-lopencv_aruco”标志。


0

在我的Debian安装中

$ dpkg -l libopencv-contrib-dev
ii  libopencv-contrib-dev:amd64 3.2.0+dfsg-6 amd64        development files for libopencv-contrib3.2

让我只需添加一个附加的include就能使用贡献模块。例如:

#include <opencv2/opencv.hpp>
#include <opencv2/face.hpp>
auto model = cv::face::createLBPHFaceRecognizer();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接