我刚刚从源代码安装了 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”。