Ubuntu下安装ORB-SLAM2时DBoW2编译报错:找不到opencv2/core.hpp
解决DBoW2编译时找不到
opencv2/core.hpp的问题 嘿,我看你在搭建ORB-SLAM2环境编译DBoW2的时候,碰到了依赖的DLib找不到OpenCV核心头文件的错误。这个问题很常见,大概率是OpenCV的路径没被CMake正确检测到,或者系统里的OpenCV配置有小问题,给你几个靠谱的解决办法:
方法1:手动给DBoW2指定OpenCV路径
- 打开DBoW2根目录下的
CMakeLists.txt文件 - 在文件开头的位置,添加你的OpenCV实际安装路径(比如我自己装的OpenCV4在
/usr/local/opencv4,你要换成自己的路径):
如果是系统默认安装的OpenCV,路径可能是set(OpenCV_DIR /usr/local/opencv4/share/OpenCV) find_package(OpenCV REQUIRED)/usr/local/share/OpenCV,你可以先去找找看这个目录存不存在。
方法2:检查并配置OpenCV环境变量
- 先确认你的OpenCV确实装好了,在终端跑这个命令:
能输出版本号就说明安装没问题,只是CMake没读到环境变量。pkg-config --modversion opencv4 # 如果你装的是opencv3就改成opencv3,opencv2的话是opencv - 把OpenCV的路径添加到bash环境变量里:
之后进到DBoW2的build目录,清空之前的编译残留,重新编译:echo 'export OpenCV_DIR=/usr/local/opencv4/share/OpenCV' >> ~/.bashrc source ~/.bashrccd /src/orbslam2/DBoW2/build rm -rf * cmake .. make -j4
方法3:确认OpenCV版本是否兼容
ORB-SLAM2一般要求用OpenCV3.x或者4.x版本。如果你的OpenCV是2.x的话,头文件结构不一样——OpenCV2里核心头文件是opencv2/core/core.hpp,而不是opencv2/core.hpp,这种情况就会报找不到的错。如果是这个原因,你得重新安装符合要求的OpenCV版本。
额外小提示
如果你是源码编译的OpenCV,一定要记得执行make install,不然头文件和库文件不会被放到系统默认的搜索路径里,CMake自然找不到。
内容的提问来源于stack exchange,提问作者Ashif Shereef
相关产品推荐
相关产品推荐

