在Open Cv 3.0.0中,在Linux(Ubuntu)中编译时无法解析FaceRecognizer类。这曾经在2.4.11版本中工作,该类存在于contrib模块中。Open cv 3.0.0版本中似乎缺少contrib模块。
默认情况下,contrib模块不随open cv 3.0.0 的安装一起提供
contrib模块必须单独安装。请按照下面的说明来解决FaceRecognizer类的编译问题。
- 首先,转到opencv中的构建目录当您安装了opencv3.0.0时,构建或发布版本
- 在那里,您可以运行以下命令来安装contrib模块
cmake-DOPENCV_EXTRA_MODULES_PATH=opencv_contrib/MODULES opencv_source_directory
-
在上面的命令中,opencv_contrib是您从github链接下载的opencv-contrib模块目录路径[https://github.com/Itseez/opencv_contrib/tree/3.0.0-rc1][1] opencv_source_directory是opencv的源目录,它通常是提取或下载它的opencv根文件夹,它将是../如果您已经按照open-cv教程的说明安装和创建版本或构建文件夹
-
我使用了github的opencv3.0.0的RC1标签,你可以使用你选择的标签。
- 现在运行以下两个命令
make-j$(nproc)
sudo制作安装
- 之后,在引用FaceRecognizer类的代码(.cpp或.hpp文件)中,将以下命名空间放在#includes附近
使用命名空间cv;使用名称空间面;
- 或者,您也可以引用带有命名空间前缀的类,如中所示,如果您将FaceRecognizer称为cv::FaceRecognize,现在将其称为cv:face::FaceIdentifizer。这只是一种编码风格。使用第6点或第7点的样式,而不是两者都使用
现在您不应该看到任何编译问题。