我刚刚从源代码安装了 Opencv 4.1.1,带有 python 3 绑定。我的 Python 安装似乎工作正常,因为如果我运行:
import cv2
cv2.__version__
我得到“4.1.1”
但是,我还想使用一些 C++ 代码。我之前安装了 3.4.3,是从源代码构建的,不幸的是我在卸载之前删除了构建文件夹。所以,当我运行这个 C++ 代码时,它只找到版本号 Macros 并打印它们:
#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 文件,因此这不是解决此问题的方法。
修复它,改变了我的“包含”参数是错误的。当我用下面的命令编译时:
有用。我在争论结束时有一个额外的“opencv2”。