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

Posted 时光、

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的安装目录可以看到是有这个文件的。

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

打开项目对应的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二连,可以看到项目已经可以编译成功了。

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

以上是关于Ubuntu 18.04下Cmake指定OpenCV版本编译(针对问题:fatal error: opencv2/xfeatures2d.hpp: No such file or directory)的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu下如何安装opencv-2.4.3

ubuntu18.04 中使用cmake 时候配置qt模块的路径的问题

Ubuntu/Linux 升级 CMake 版本

ubuntu18.04下stlink的一种安装方法

Ubuntu18.04 手动安装 make 3.82 + gcc 8.3.0 + cmake 3.20.5

CMake 无法找到 SDL2_ttf,我正在尝试以与 SDL2 相同的方式链接它,并且两者都正确安装在 Ubuntu 18.04 上