Package-Management

理解幾乎不包含文件的包

  • April 26, 2019
$ 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 的特性?我這邊的一個小疏忽?我想繼續使用包管理器,而不是自己編譯整個東西。

軟體包很好,您使用了錯誤的dpkg選項:

dpkg -L libopencv-contrib-dev

將列出 中的所有文件libopencv-contrib-dev,這就是您所追求的(並將顯示此處列出的所有文件),而

dpkg -S libopencv-contrib-dev

在所有已安裝的軟體包中搜尋libopencv-contrib-dev其路徑中的文件,該路徑僅匹配您列出的四個文件。

這是我的疏忽。

#include <opencv2/opencv.hpp>
#include <opencv2/face.hpp>

第一個包含是不夠的,第二個也是需要的。

雖然這解決了問題,但我希望能解釋一下為什麼沒有任何有用的文件出現在dpkg -S.

引用自:https://unix.stackexchange.com/questions/506660