从 3.4.3 上的源代码安装了 Opencv 4.1.1,并且 C++ 头文件链接不正确

从 3.4.3 上的源代码安装了 Opencv 4.1.1,并且 C++ 头文件链接不正确

我刚刚从源代码安装了 Opencv 4.1.1,带有 python 3 绑定。我的 Python 安装似乎运行正常,因为如果我运行:

import cv2
cv2.__version__

我得到“4.1.1”

但是,我还想使用一些 C++ 代码。我之前安装了 3.4.3,是从源代码构建的,不幸的是,在卸载它之前,我删除了构建文件夹。因此,当我运行此 C++ 代码时,它只会找到版本号宏并打印它们:

#include <opencv2/core.hpp>

using namespace cv;
using namespace std;
int main( int argc, char** argv )
{
    //print opencv version
    printf("opencv version: %d.%d.%d\n",CV_VERSION_MAJOR,CV_VERSION_MINOR,CV_VERSION_REVISION);

    return 0;
}

当我用这个命令编译时:

g++ -o get_version get_version.cpp -I/usr/local/include/opencv4/opencv2 -Lusr/local/lib -lopencv_core

它返回 3.4.3。

因此,我想修复此问题,因此我找到了旧的头文件,并将它们全部删除(它们位于 /usr/local/include/opencv2)。但是现在,当我尝试编译代码时,它给出了错误:

get_version.cpp:1:10: fatal error: opencv2/core.hpp: No such file or directory
#include <opencv2/core.hpp>
         ^~~~~~~~~~~~~~~~~~
compilation terminated.

但是,如果我导航到 /usr/local/include/opencv4/opencv2/,我可以看到文件 core.hpp,所以我不知道为什么编译器找不到它。

那么,为什么我的标题链接不正确?我该如何解决这个问题。我以为命令 -I/usr/local/include/opencv4/opencv2 可以让它找到它。我也已经运行了

sudo ldconfig

虽然我不确定该命令到底是做什么的。另外,对于那些不知道的人来说,opencv 4 不会自动包含 pkg-config 文件,所以这不是解决这个问题的办法。

答案1

已修复,更改了我的“include”参数,结果错误。当我使用以下命令进行编译时:

g++ -o get_version get_version.cpp -I/usr/local/include/opencv4 -L/usr/local/lib -lopencv_core

有效。我在参数末尾多了一个“opencv2”。

相关内容