ubuntu20.4下ORB_SLAM2使用Opencv4进行编译遇到的若干问题及解决方法

问题0

fatal error: opencv/cv.h: 没有那个文件或目录

解决

#include 
换成
#include
#include 

==============================================================================
问题1

/usr/include/c++/9/bits/stl_map.h:122:71: error: static assertion failed: std::map must have the same value_type as its allocator
static_assert(is_same::value,

解决

把LoopClosing.h第49行的
     typedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>,
        Eigen::aligned_allocator<std::pair<const KeyFrame*, g2o::Sim3> > > KeyFrameAndPose;
改成下面
    typedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>,
        Eigen::aligned_allocator<std::pair<KeyFrame* const, g2o::Sim3> > > KeyFrameAndPose;

==============================================================================
问题2

error: ‘CV_LOAD_IMAGE_UNCHANGED’ was not declared in this scope

解决

//在保存的文件中添加头文件
#include "opencv2/imgcodecs/legacy/constants_c.h"

==============================================================================
问题3

error: ‘usleep’ was not declared in this scope

解决

添加头文件
#include

==============================================================================
问题4

找不的libboost_system.so或者libboost_filesystem.so或者和boost_system.so相关问题

解决

使用
locate libboost_system.so
locate libboost_filesystem.so
找到相关路径添加到  cmakeList中的set(LIBS      )
/usr/lib/x86_64-linux-gnu/libboost_system.so
/usr/lib/x86_64-linux-gnu/libboost_filesystem.so
若没有找到需要安装boost库

问题5

==============================================================================

error: ‘CV_MAX_DIM’ was not declared in this scope

解决

#include 

==============================================================================
问题6

error: return-statement with a value, in function returning ‘void’ [-fpermissive]

解决

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}  -fpermissive")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive")

==============================================================================
问题7

 error: ‘CV_LOAD_IMAGE_UNCHANGED’ is not a member of ‘cv’

解决

添加(几乎所有的案例都要加)
#include "opencv2/imgcodecs/legacy/constants_c.h"

==============================================================================
问题8

error: ‘slots_reference’ was not declared in this scope

解决

这是最新 Pangolin的问题,卸载最新的 Pangolin。到 Pangolin项目的build中执行 sudo make uninstall
把 Pangolin切换到v0.6版(git checkout v0.6),在编译安装即可。

问题x

在CmakeList中设置了opencv库路径,在其他子项目中可能无法加载对应的库

解决

暴力解决手动添加Opencv库
/usr/local/lib/libopencv_gapi.so 
/usr/local/lib/libopencv_stitching.so 
/usr/local/lib/libopencv_alphamat.so 
/usr/local/lib/libopencv_aruco.so 
/usr/local/lib/libopencv_bgsegm.so
/usr/local/lib/libopencv_bioinspired.so 
/usr/local/lib/libopencv_ccalib.so 
/usr/local/lib/libopencv_dnn_objdetect.so 
/usr/local/lib/libopencv_dnn_superres.so 
/usr/local/lib/libopencv_dpm.so 
/usr/local/lib/libopencv_face.so 
/usr/local/lib/libopencv_freetype.so 
/usr/local/lib/libopencv_fuzzy.so 
/usr/local/lib/libopencv_hdf.so 
/usr/local/lib/libopencv_hfs.so 
/usr/local/lib/libopencv_img_hash.so 
/usr/local/lib/libopencv_intensity_transform.so 
/usr/local/lib/libopencv_line_descriptor.so 
/usr/local/lib/libopencv_mcc.so 
/usr/local/lib/libopencv_quality.so 
/usr/local/lib/libopencv_rapid.so 
/usr/local/lib/libopencv_reg.so 
/usr/local/lib/libopencv_rgbd.so 
/usr/local/lib/libopencv_saliency.so 
/usr/local/lib/libopencv_stereo.so 
/usr/local/lib/libopencv_structured_light.so 
/usr/local/lib/libopencv_phase_unwrapping.so 
/usr/local/lib/libopencv_superres.so 
/usr/local/lib/libopencv_optflow.so 
/usr/local/lib/libopencv_surface_matching.so 
/usr/local/lib/libopencv_tracking.so 
/usr/local/lib/libopencv_highgui.so 
/usr/local/lib/libopencv_datasets.so 
/usr/local/lib/libopencv_text.so 
/usr/local/lib/libopencv_plot.so 
/usr/local/lib/libopencv_videostab.so 
/usr/local/lib/libopencv_videoio.so 
/usr/local/lib/libopencv_viz.so 
/usr/local/lib/libopencv_wechat_qrcode.so 
/usr/local/lib/libopencv_xfeatures2d.so 
/usr/local/lib/libopencv_shape.so 
/usr/local/lib/libopencv_ml.so 
/usr/local/lib/libopencv_ximgproc.so 
/usr/local/lib/libopencv_video.so 
/usr/local/lib/libopencv_dnn.so 
/usr/local/lib/libopencv_xobjdetect.so 
/usr/local/lib/libopencv_objdetect.so 
/usr/local/lib/libopencv_calib3d.so 
/usr/local/lib/libopencv_imgcodecs.so 
/usr/local/lib/libopencv_features2d.so 
/usr/local/lib/libopencv_flann.so 
/usr/local/lib/libopencv_xphoto.so 
/usr/local/lib/libopencv_photo.so 
/usr/local/lib/libopencv_imgproc.so 
/usr/local/lib/libopencv_core.so

参考
参考

你可能感兴趣的:(SLAM入门,ubuntu,linux)