问题分析:需要一个依赖项opencv,但是在路径/usr/include/opencv没找到,
目的:寻找/usr/include/opencv是为了访问opencv库的头文件,以便使用opencv,通过查找;
查看系统默认opencv
pkg-config --modversion opencv
通过命令:
dpkg -l | grep libopencv
得到如下信息:
可以发现一个是3.4.19版本,一个是4.2.0版本,而我们的系统在编译和链接程序时,通常应该以
pkg-config --modversion opencv
输出的版本为准,
通过命令:
pkg-config --cflags opencv
查看opencv指定的头文件路径,其中 -I
指定了头文件路径
我们也可以通过命令来查看4.2.0版本的opencv的头文件路径
pkg-config --cflags opencv4
我们的报错信息是 '/usr/include/opencv' as an include dir, which is not found. It does neither exist
这是因为我们想使用opencv3版本,而通过软件包管理器我们安装opencv3版本时会将头文件默认放置在路径/usr/include/opencv下,而安装opencv4版本时一般会安装在/usr/include/opencv4路径下,现在有两种解决办法,第一种是通过软件包管理器安装指定版本的opencv,第二种是手动版本,因为我已经手动编译安装了opencv3版本,因此制作一个符号链接就可以了,需要注意的是在我们执行以下命令之前,/usr/include/路径下没有opencv这个文件夹:
sudo ln -s /usr/local/include/opencv /usr/include/opencv
这条命令是在创建一个符号链接(symbolic link),将 `/usr/local/include/opencv` 这个路径链接到 `/usr/include/opencv`。
每个部分的含义:
- `sudo`: 使用超级用户权限执行命令。
- `ln -s`: 创建符号链接的命令。
- `/usr/local/include/opencv`: 要创建链接的源目录或文件。
- `/usr/include/opencv`: 要创建的符号链接的目标路径。
所以,这个命令的效果是在 `/usr/include` 目录下创建一个名为 `opencv` 的符号链接,它指向 `/usr/local/include/opencv` 这个目录。这样做的目的是为了在系统上创建一个通用的路径,使得 `/usr/include/opencv` 可以引用 `/usr/local/include/opencv` 下的文件,方便使用 OpenCV 库的开发者在编译时指定正确的头文件路径。
以后我们有什么软件包想找/usr/include/opencv路径的头文件,就会得到/usr/local/include/opencv下的文件