在opencv 3.0中缺少contrib模块?

时间:2015-02-04 13:50:37

标签: c++ opencv image-processing opencv3.0 opencv-contrib

我正在使用OpenCV 3.0 beta。

我尝试使用createLBPHFaceRecognizer()创建一个面部识别器; class as,

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

我遇到的错误是

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

我研究过并发现该类存在于opencv2的contrib模块中 (opencv2 / contrib / contrib.hpp)以前版本的OpenCV

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

如果没有定义它们,除现有模块外,我们如何添加此模块?

3 个答案:

答案 0 :(得分:9)

您必须下载并构建opencv_contrib repo。

运行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 :(得分:0)

来自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. 按下配置按钮,然后按下生成按钮( 第一次,您将被问到要使用哪种makefile样式)
  7. 使用您选择的方法构建opencv核心(make和make 如果在步骤6中选择了Unix makfile,请安装
  8. 要运行,需要添加contrib模块的链接器标志,以便在代码/ IDE中使用它们。例如,要使用aruco模块,&#34; -lopencv_aruco&#34;将添加标志。

答案 2 :(得分: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 <opencv2/opencv.hpp>
#include <opencv2/face.hpp>
auto model = cv::face::createLBPHFaceRecognizer();