前言
orb_slam工程出了很长时间了,但是一直没有更新,这就导致他的一些代码并不适合一些高版本的依赖,比如opencv4.1等。本文主要解决编译orb_slam的过程中出现的一些问题,且如何将opencv的版本替换成opencv4.0以上的版本。
1.将opencv的版本替换成opencv4.0以上版本
修改ORB_SLAM2文件夹下的CMakeList.txt文件为
find_package(OpenCV 4 QUIET)
if(NOT OpenCV_FOUND)
find_package(OpenCV 2.4.3 QUIET)
if(NOT OpenCV_FOUND)
message(FATAL_ERROR "OpenCV > 2.4.3 not found.")
endif()
endif()
2. error: ‘CV_LOAD_IMAGE_UNCHANGED’ was not declared in this scope
这是由于opencv高版本弃用CV_LOAD_IMAGE_UNCHANGED这一参数导致的
解决方法:
将CV_LOAD_IMAGE_UNCHANGED
换成IMREAD_UNCHANGED
并在代码头文件下面添加命名空间using namespace cv;
3. error: ‘usleep’ was not declared in this scope usleep(3000);
解决方案:
在报错的文件里添加头文件
#include <unistd.h>
4. /usr/bin/ld: CMakeFiles/Stereo.dir/src/ros_stereo.cc.o: undefined reference to symbol ‘_ZN5boost6system15system_categoryEv’ /usr/lib/x86_64-linux-gnu/libboost_system.so: error adding symbols: DSO missing from command line
问题描述:
/usr/bin/ld: CMakeFiles/Stereo.dir/src/ros_stereo.cc.o: undefined reference to symbol '_ZN5boost6system15system_categoryEv'
/usr/lib/x86_64-linux-gnu/libboost_system.so: error adding symbols: DSO missing from command line
解决方案:
Cmakelist.txt文件里添加
target_link_libraries(Stereo boost_system boost_filesystem)