$ uname -a
Linux laptop 4.19.0-2-amd64 #1 SMP Debian 4.19.16-1 (2019-01-17) x86_64 GNU/Linux
我需要使用cv::face::createLBPHFaceRecognizer()
,它不是核心 OpenCV 的一部分,而是一个贡献的模块。
$ dpkg -l libopencv-contrib-dev
ii libopencv-contrib-dev:amd64 3.2.0+dfsg-6 amd64 development files for libopencv-contrib3.2
一切都很好...不:
src/cmd.cpp:150: error: ‘cv::face’ has not been declared
const auto model = cv::face::createLBPHFaceRecognizer();
^~~~
好的。然后让我们手动包含所需的标头:
$ dpkg -S libopencv-contrib-dev
libopencv-contrib-dev:amd64: /usr/share/doc/libopencv-contrib-dev
libopencv-contrib-dev:amd64: /usr/share/doc/libopencv-contrib-dev/changelog.Debian.gz
libopencv-contrib-dev:amd64: /usr/share/doc/libopencv-contrib-dev/copyright
libopencv-contrib-dev:amd64: /usr/share/doc/libopencv-contrib-dev/README.Debian
没有什么!这是打包者的错误吗(这是 Debian测试毕竟)? OpenCV 的特点?我这边的一个小疏忽?我想继续使用包管理器,而不是自己编译整个东西。
答案1
该软件包很好,您使用了错误的dpkg
选项:
dpkg -L libopencv-contrib-dev
将列出 中的所有文件libopencv-contrib-dev
,这就是您所追求的(并将显示所有文件此处列出), 然而
dpkg -S libopencv-contrib-dev
在所有已安装的软件包中搜索libopencv-contrib-dev
其路径中的文件,该文件仅与您列出的四个文件匹配。
答案2
这是我的疏忽。
#include <opencv2/opencv.hpp>
#include <opencv2/face.hpp>
第一个包含不够,还需要第二个包含。
虽然这解决了问题,但我希望能解释一下为什么没有任何有用的文件出现在dpkg -S
.