理解几乎不包含任何文件的包

理解几乎不包含任何文件的包
$ 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.

相关内容