Ubuntu 18.04下Cmake指定OpenCV版本编译(针对问题:fatal error: opencv2/xfeatures2d.hpp: No such file or directory)

已经安装有Ros-melodic,自带有OpenCV 3.2.0。

编译一个项目时需要调用SIFT算法,这个算法需要include xfeatures2d.hpp头文件。

自带的OpenCV 3.2.0不包含这个部分,且项目需要OpenCV 4.1以上版本,于是下载安装4.1,仍然无法编译。查询后得知SIFT需要安装对应版本的contrib,遂重新下载OpenCV 4.1 + OpenCV_contrib 4.1.0,教程如下:

【Ubuntu 环境配置】(1)Ubuntu安装opencv-4.1.0+opencv_contrib-4.1.0(c++,py2,py3 皆可运行)_咿呀的博客-CSDN博客

但是吊诡的是安装之后仍然提示缺失xfeatures2d.hpp文件,但是查看OpenCV的安装目录可以看到是有这个文件的。

Ubuntu 18.04下Cmake指定OpenCV版本编译(针对问题:fatal error: opencv2/xfeatures2d.hpp: No such file or directory)_第1张图片

 查询默认OpenCV版本可知,系统会自动调用ROS-melodic自带的OpenCV 3.2.0。但是查询opencv4可以看出我们的4.1.0是正确安装了的,也就是说系统编译的时候没有使用4.1.0版本,需要我们手动指定Cmake编译的OpenCV版本。

Ubuntu 18.04下Cmake指定OpenCV版本编译(针对问题:fatal error: opencv2/xfeatures2d.hpp: No such file or directory)_第2张图片

打开项目对应的CmakeList.txt,在文件中加入前三行,位置位于 find_package(OpenCV 4.1 REQUIRED) 之前。

set(OpenCV_DIR "/home/jonas/opencv/mybuild")
set(OpenCV_INCLUDE_DIRS "/home/jonas/opencv/include")
set(OpenCV_LIBRARIES "/home/jonas/opencv/mybuild/lib")

find_package(OpenCV 4.1 REQUIRED)

 需要注意的是,某些教程只加了第一行,在我这里仍然会调用3.2.0版本,如果你只指定OpenCV_DIR仍然无法编译,请配置全部三行。

第一行是你opencv安装的build目录,第二行是你opencv下的include目录,第三行指定build下的lib目录。具体路径请参考你自己的OpenCV安装目录然后填写正确的路径。别忘记配置完之后保存你的CMakeLists.txt以应用更改。

然后继续cmake -> make二连,可以看到项目已经可以编译成功了。

 折腾我好久的问题终于解决了,开心!

你可能感兴趣的:(opencv,opencv,ubuntu,自动驾驶,cmake)