完整过程
1、安装anocoda
2、换成清华源
3、安装boost库:
sudo apt-get install libboost-all-dev
4、oprncv2.4.11与opencv4.2双版本切换使用
我的opencv4在这里:
(dynaslam2) tan@LEGION:~/DynaSLAM2$ pkg-config opencv4 --modversion
4.2.0
查找opencv库文件的位置:
(dynaslam2) tan@LEGION:~/DynaSLAM2$ find /usr/ -name "*opencv*.so*"
/usr/lib/jni/libopencv_java420.so
/usr/lib/x86_64-linux-gnu/libopencv_structured_light.so
/usr/lib/x86_64-linux-gnu/libopencv_dnn.so
/usr/lib/x86_64-linux-gnu/libopencv_img_hash.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so
/usr/lib/x86_64-linux-gnu/libopencv_phase_unwrapping.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_quality.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_dnn_superres.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_viz.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_plot.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_highgui.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_dnn_objdetect.so
/usr/lib/x86_64-linux-gnu/libopencv_highgui.so
/usr/lib/x86_64-linux-gnu/libopencv_shape.so
/usr/lib/x86_64-linux-gnu/libopencv_superres.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_ccalib.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_calib3d.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_videostab.so
/usr/lib/x86_64-linux-gnu/libopencv_superres.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_rgbd.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_hdf.so
/usr/lib/x86_64-linux-gnu/libopencv_line_descriptor.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_text.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_text.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_rgbd.so
/usr/lib/x86_64-linux-gnu/libopencv_dpm.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_features2d.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_video.so
/usr/lib/x86_64-linux-gnu/libopencv_face.so
/usr/lib/x86_64-linux-gnu/libopencv_phase_unwrapping.so
/usr/lib/x86_64-linux-gnu/libopencv_quality.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_viz.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so
/usr/lib/x86_64-linux-gnu/libopencv_ml.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_bgsegm.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_fuzzy.so
/usr/lib/x86_64-linux-gnu/libopencv_dnn_superres.so
/usr/lib/x86_64-linux-gnu/libopencv_aruco.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_bioinspired.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_superres.so
/usr/lib/x86_64-linux-gnu/libopencv_dnn_superres.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_ml.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_quality.so
/usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_fuzzy.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_freetype.so
/usr/lib/x86_64-linux-gnu/libopencv_calib3d.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_dpm.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_core.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_videostab.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_core.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_xobjdetect.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_shape.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_saliency.so
/usr/lib/x86_64-linux-gnu/libopencv_objdetect.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_videostab.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_structured_light.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_saliency.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_videoio.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_reg.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_hdf.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_face.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_stereo.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_stitching.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_saliency.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_ximgproc.so
/usr/lib/x86_64-linux-gnu/libopencv_line_descriptor.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_plot.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_core.so
/usr/lib/x86_64-linux-gnu/libopencv_objdetect.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_hfs.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_datasets.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_video.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_bioinspired.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_reg.so
/usr/lib/x86_64-linux-gnu/libopencv_video.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_videoio.so
/usr/lib/x86_64-linux-gnu/libopencv_face.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_freetype.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_stitching.so
/usr/lib/x86_64-linux-gnu/libopencv_surface_matching.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_photo.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_tracking.so
/usr/lib/x86_64-linux-gnu/libopencv_ccalib.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_datasets.so
/usr/lib/x86_64-linux-gnu/libopencv_dnn_objdetect.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_flann.so
/usr/lib/x86_64-linux-gnu/libopencv_stereo.so
/usr/lib/x86_64-linux-gnu/libopencv_freetype.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_bgsegm.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_img_hash.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_ml.so
/usr/lib/x86_64-linux-gnu/libopencv_photo.so
/usr/lib/x86_64-linux-gnu/libopencv_structured_light.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_dnn_objdetect.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_viz.so
/usr/lib/x86_64-linux-gnu/libopencv_videoio.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_dnn.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_features2d.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_xobjdetect.so
/usr/lib/x86_64-linux-gnu/libopencv_dpm.so
/usr/lib/x86_64-linux-gnu/libopencv_features2d.so
/usr/lib/x86_64-linux-gnu/libopencv_surface_matching.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_plot.so
/usr/lib/x86_64-linux-gnu/libopencv_tracking.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_img_hash.so
/usr/lib/x86_64-linux-gnu/libopencv_text.so
/usr/lib/x86_64-linux-gnu/libopencv_optflow.so
/usr/lib/x86_64-linux-gnu/libopencv_highgui.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_dnn.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_hfs.so
/usr/lib/x86_64-linux-gnu/libopencv_hdf.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_hfs.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_datasets.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_xphoto.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_optflow.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_calib3d.so
/usr/lib/x86_64-linux-gnu/libopencv_aruco.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_fuzzy.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_surface_matching.so
/usr/lib/x86_64-linux-gnu/libopencv_xphoto.so
/usr/lib/x86_64-linux-gnu/libopencv_ximgproc.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_ccalib.so
/usr/lib/x86_64-linux-gnu/libopencv_xphoto.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_ximgproc.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_tracking.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_phase_unwrapping.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_flann.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_photo.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_bioinspired.so
/usr/lib/x86_64-linux-gnu/libopencv_stitching.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_rgbd.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_flann.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_line_descriptor.so
/usr/lib/x86_64-linux-gnu/libopencv_xobjdetect.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_aruco.so
/usr/lib/x86_64-linux-gnu/libopencv_stereo.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_reg.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_shape.so.4.2
/usr/lib/x86_64-linux-gnu/libopencv_optflow.so.4.2.0
/usr/lib/x86_64-linux-gnu/libopencv_objdetect.so
/usr/lib/x86_64-linux-gnu/libopencv_bgsegm.so
/usr/local/opencv2.4.11/lib/libopencv_video.so.2.4
/usr/local/opencv2.4.11/lib/libopencv_features2d.so.2.4
/usr/local/opencv2.4.11/lib/libopencv_gpu.so
/usr/local/opencv2.4.11/lib/libopencv_highgui.so
/usr/local/opencv2.4.11/lib/libopencv_calib3d.so.2.4.11
/usr/local/opencv2.4.11/lib/libopencv_videostab.so
/usr/local/opencv2.4.11/lib/libopencv_contrib.so.2.4.11
/usr/local/opencv2.4.11/lib/libopencv_video.so
/usr/local/opencv2.4.11/lib/libopencv_nonfree.so.2.4.11
/usr/local/opencv2.4.11/lib/libopencv_superres.so.2.4
/usr/local/opencv2.4.11/lib/libopencv_imgproc.so
/usr/local/opencv2.4.11/lib/libopencv_core.so.2.4.11
/usr/local/opencv2.4.11/lib/libopencv_core.so.2.4
/usr/local/opencv2.4.11/lib/libopencv_ocl.so
/usr/local/opencv2.4.11/lib/libopencv_highgui.so.2.4
/usr/local/opencv2.4.11/lib/libopencv_videostab.so.2.4
/usr/local/opencv2.4.11/lib/libopencv_videostab.so.2.4.11
/usr/local/opencv2.4.11/lib/libopencv_superres.so
/usr/local/opencv2.4.11/lib/libopencv_calib3d.so.2.4
/usr/local/opencv2.4.11/lib/libopencv_ml.so.2.4.11
/usr/local/opencv2.4.11/lib/libopencv_contrib.so
/usr/local/opencv2.4.11/lib/libopencv_nonfree.so.2.4
/usr/local/opencv2.4.11/lib/libopencv_photo.so.2.4.11
/usr/local/opencv2.4.11/lib/libopencv_flann.so.2.4
/usr/local/opencv2.4.11/lib/libopencv_flann.so.2.4.11
/usr/local/opencv2.4.11/lib/libopencv_stitching.so.2.4
/usr/local/opencv2.4.11/lib/libopencv_legacy.so.2.4
/usr/local/opencv2.4.11/lib/libopencv_core.so
/usr/local/opencv2.4.11/lib/libopencv_legacy.so
/usr/local/opencv2.4.11/lib/libopencv_photo.so.2.4
/usr/local/opencv2.4.11/lib/libopencv_ocl.so.2.4.11
/usr/local/opencv2.4.11/lib/libopencv_superres.so.2.4.11
/usr/local/opencv2.4.11/lib/libopencv_stitching.so
/usr/local/opencv2.4.11/lib/libopencv_ml.so.2.4
/usr/local/opencv2.4.11/lib/libopencv_gpu.so.2.4
/usr/local/opencv2.4.11/lib/libopencv_flann.so
/usr/local/opencv2.4.11/lib/libopencv_video.so.2.4.11
/usr/local/opencv2.4.11/lib/libopencv_imgproc.so.2.4
/usr/local/opencv2.4.11/lib/libopencv_ml.so
/usr/local/opencv2.4.11/lib/libopencv_photo.so
/usr/local/opencv2.4.11/lib/libopencv_features2d.so
/usr/local/opencv2.4.11/lib/libopencv_ocl.so.2.4
/usr/local/opencv2.4.11/lib/libopencv_highgui.so.2.4.11
/usr/local/opencv2.4.11/lib/libopencv_imgproc.so.2.4.11
/usr/local/opencv2.4.11/lib/libopencv_features2d.so.2.4.11
/usr/local/opencv2.4.11/lib/libopencv_nonfree.so
/usr/local/opencv2.4.11/lib/libopencv_calib3d.so
/usr/local/opencv2.4.11/lib/libopencv_contrib.so.2.4
/usr/local/opencv2.4.11/lib/libopencv_legacy.so.2.4.11
/usr/local/opencv2.4.11/lib/libopencv_stitching.so.2.4.11
/usr/local/opencv2.4.11/lib/libopencv_gpu.so.2.4.11
/usr/local/opencv2.4.11/lib/libopencv_objdetect.so.2.4.11
/usr/local/opencv2.4.11/lib/libopencv_objdetect.so.2.4
/usr/local/opencv2.4.11/lib/libopencv_objdetect.so
在别的路径下安装opencv2.4.11
安装步骤:(双系统GPU版)DynaSLAM超详细安装配置运行ubantu20.0.4+opencv2.4.11+tensorflow-gpu1.14.0-CSDN博客
如何切换:
4、下载DynaSLAM_Master
(1)下载DynaSLAM:
git clone https://github.com/BertaBescos/DynaSLAM.git
(2)下载mask_rcnn_coco.h5
git clone https://github.com/matterport/Mask_RCNN/releases
放到DynaSLAM的src/python中
5、配conda环境
打开conda
conda create -n dynaslam2 python=2.7
conda activate dynaslam2
装包:
pip install tensorflow-gpu==1.14.0
pip install keras==2.0.9
pip install h5py==2.10.0
pip install numpy==1.16.6
pip install pillow==6.2.2
pip install pycocotools==2.0.3(这个会报错)
pip install scikit-image==0.14.5
sudo apt-get install libcanberra-gtk-module
对于pycocotools问题(也不知道是哪个方法起到了效果):
方法一:
pip install git+ https://github.com/philferriere/cocoapi.git#subdirectory=PythonAPI
直接能安装,然后查看位置:locate pycocotools,确定是否已安装
方法二:
git clone https://github.com/waleedka/coco.git
cd coco-master/PythonAPI
sudo make install(会报错,执行下一行)
pythonsetup.py build_ext install
安装以后,把pycocotools文件夹放到DynaSLAM/src/python中 (后续运行时发现会报错,把这个pycocotools删除了,就不报错了)
应该可以解决下边这个问题
6.检查自己的环境
conda list
因为可能会有细微的版本不同,再用pip安装一下正确的版本
(1)激活 conda 环境
conda activate dynaslam2
(2)安装指定版本的包
conda install -c http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge _libgcc_mutex=0.1 _openmp_mutex=4.5=2_gnu ca-certificates=2022.12.7 certifi=2016.9.26 ld_impl_linux-64=2.40 libffi=3.2.1 libgcc-ng=12.2.0 libgomp=12.2.0 libsqlite=3.40.0 libstdcxx-ng=12.2.0 libzlib=1.2.13 ncurses=6.3 openssl=1.1.1t python=2.7.15=h5a48372_1011_cpython python_abi=2.7=1_cp27mu readline=8.2 sqlite=3.40.0 tk=8.6.12 wheel=0.34.2
(3)确保安装包的版本
conda install -c http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
zlib=1.2.13
(4)用pip安装包
pip install absl-py0.15.0 astor0.8.1 backports-functools-lru-cache1.6.4 backports-weakref1.0.post1 cloudpickle1.3.0 cycler0.10.0 cython0.29.33 decorator4.4.2 enum341.1.10 funcsigs1.0.2 futures3.4.0 gast0.5.3 google-pasta0.2.0 grpcio1.41.1 h5py2.10.0 keras2.0.9 keras-applications1.0.8 keras-preprocessing1.1.2 kiwisolver1.1.0 markdown3.1.1 matplotlib2.2.5 mock3.0.5 networkx2.2 numpy1.16.6 pillow6.2.2 protobuf3.17.3 pycocotools2.0.3 pyparsing2.4.7 python-dateutil2.8.2 pytz2022.7.1 pywavelets1.0.3 pyyaml5.4.1 scikit-image0.14.5 scipy1.2.3 setuptools44.1.1 six1.16.0 subprocess323.5.4 tensorboard1.14.0 tensorflow-estimator1.14.0 tensorflow-gpu1.14.0 termcolor1.1.0 werkzeug1.0.1 wrapt==1.15.0
7、更改cmakelists.tst
cmake_minimum_required(VERSION 2.8)
project(DynaSLAM)
IF(NOT CMAKE_BUILD_TYPE)
SET(CMAKE_BUILD_TYPE Release)
SET(CMAKE_BUILD_TYPE Debug)
ENDIF()
MESSAGE("Build type: " ${CMAKE_BUILD_TYPE})
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -O3 ")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -O3 ")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -O0 -march=native ")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -O0 -march=native")
Check C++11 or C++0x support
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
add_definitions(-DCOMPILEDWITHC11)
message(STATUS "Using flag -std=c++11.")
elseif(COMPILER_SUPPORTS_CXX0X)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
add_definitions(-DCOMPILEDWITHC0X)
message(STATUS "Using flag -std=c++0x.")
else()
message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()
LIST(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules)
message("PROJECT_SOURCE_DIR: " ${OpenCV_DIR})
find_package(OpenCV 2.4.11 QUIET)##改为2.4.11
if(NOT OpenCV_FOUND)
message("OpenCV > 2.4.11 not found.")
find_package(OpenCV 3.0 QUIET)
if(NOT OpenCV_FOUND)
message(FATAL_ERROR "OpenCV > 3.0 not found.")
endif()
endif()
#find_package(OpenCV 3.0 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()
find_package(Qt5Widgets REQUIRED)
find_package(Qt5Concurrent REQUIRED)
find_package(Qt5OpenGL REQUIRED)
find_package(Qt5Test REQUIRED)
find_package(PythonLibs REQUIRED)
if (NOT PythonLibs_FOUND)
message(FATAL_ERROR "PYTHON LIBS not found.")
else()
message("PYTHON LIBS were found!")
message("PYTHON LIBS DIRECTORY: " ${PYTHON_LIBRARY})
endif()
find_package(Boost REQUIRED COMPONENTS thread)
if(Boost_FOUND)
message("Boost was found!")
message("Boost Headers DIRECTORY: " ${Boost_INCLUDE_DIRS})
message("Boost LIBS DIRECTORY: "${Boost_LIBRARY_DIRS})
message("Found Libraries: " ${Boost_LIBRARIES})
endif()
find_package(Eigen3 3.1.0 REQUIRED)
find_package(Pangolin REQUIRED)
set(PYTHON_INCLUDE_DIRS ${PYTHON_INCLUDE_DIRS} /usr/local/lib/python2.7/dist-packages/numpy/core/include/numpy)
include_directories(
${PROJECT_SOURCE_DIR}${PROJECT_SOURCE_DIR}/include
${EIGEN3_INCLUDE_DIR}${Pangolin_INCLUDE_DIRS}
/home/tan/anaconda3/envs/dynaslam2/include/python2.7##自己改的
/usr/include/python2.7/
/usr/lib/python2.7/dist-packages/numpy/core/include/numpy/
${Boost_INCLUDE_DIRS}
)
message("PROJECT_SOURCE_DIR: "${PROJECT_SOURCE_DIR})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib)
add_library(${PROJECT_NAME} SHARED
src/System.cc
src/Tracking.cc
src/LocalMapping.cc
src/LoopClosing.cc
src/ORBextractor.cc
src/ORBmatcher.cc
src/FrameDrawer.cc
src/Converter.cc
src/MapPoint.cc
src/KeyFrame.cc
src/Map.cc
src/MapDrawer.cc
src/Optimizer.cc
src/PnPsolver.cc
src/Frame.cc
src/KeyFrameDatabase.cc
src/Sim3Solver.cc
src/Initializer.cc
src/Viewer.cc
src/Conversion.cc
src/MaskNet.cc
src/Geometry.cc
)
target_link_libraries(${PROJECT_NAME}${OpenCV_LIBS}
${EIGEN3_LIBS}${Pangolin_LIBRARIES}
${PROJECT_SOURCE_DIR}/Thirdparty/DBoW2/lib/libDBoW2.so${PROJECT_SOURCE_DIR}/Thirdparty/g2o/lib/libg2o.so
/usr/lib/x86_64-linux-gnu/libpython2.7.so
${Boost_LIBRARIES}
)
Build examples
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples/RGB-D)
add_executable(rgbd_tum
Examples/RGB-D/rgbd_tum.cc)
target_link_libraries(rgbd_tum ${PROJECT_NAME})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples/Stereo)
add_executable(stereo_kitti
Examples/Stereo/stereo_kitti.cc)
target_link_libraries(stereo_kitti ${PROJECT_NAME})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples/Monocular)
add_executable(mono_tum
Examples/Monocular/mono_tum.cc)
target_link_libraries(mono_tum ${PROJECT_NAME})
add_executable(mono_kitti
Examples/Monocular/mono_kitti.cc)
target_link_libraries(mono_kitti ${PROJECT_NAME})
#把这个注释了
#add_executable(mono_carla
#Examples/Monocular/mono_carla.cc)
#target_link_libraries(mono_carla ${PROJECT_NAME})
8、改代码:
Conversion.h
(1)<python2.7/Python.h>改成<Python.h>
(2)因为ndarraryobject.h是在conda环境的python2.7里边,所以直接改为实际路径,也可以在cmakelists添加"/home/tan/anaconda3/envs/dynaslam2/lib/python2.7/site-packages/numpy/core/include/numpy,这里就不改了。
这里把#include "ndarrayobject.h"改为:
#include "/home/tan/anaconda3/envs/dynaslam2/lib/python2.7/site-packages/numpy/core/include/numpy/ndarrayobject.h"
LoopClosing.h
把const移到后边
MaskNet.h
<python2.7/Python.h>改成<Python.h>,因为cmakelists中加上了/home/tan/anaconda3/envs/dynaslam2/include/python2.7
viewer.cc
加上if语句
9、编译
在dynaslam2环境下
cd ~DynaSLAM2
sudo chmod +x build.sh
./build.sh
问题:找不到 make[2]: *** 没有规则可制作目标“/usr/lib/x86_64-linux-gnu/libpython2.7.so
参考:
解决:是因为这个libpython2.7.so在conda的环境中,所以在/usr/lib/x86_64-linux-gnu/ 下找不到
先找到他的位置:
$ find $(conda info --base)/envs/dynaslam2 -name "libpython2.7.so"
在把他复制过去
$ sudo cp /home/tan/anaconda3/envs/dynaslam2/lib/libpython2.7.so /usr/lib/x86_64-linux-gnu/
10、运行
问题:
./Examples/Monocular/mono_kitti: error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
解决:
(dynaslam2) tan@LEGION:~/DynaSLAM2$ find $(conda info --base)/envs/dynaslam2 -name "libpython2.7.so*"
/home/tan/anaconda3/envs/dynaslam2/lib/libpython2.7.so
/home/tan/anaconda3/envs/dynaslam2/lib/libpython2.7.so.1.0
(dynaslam2) tan@LEGION:~/DynaSLAM2$ export LD_LIBRARY_PATH=/home/tan/anaconda3/envs/dynaslam2/lib:$LD_LIBRARY_PATH
(dynaslam2) tan@LEGION:~/DynaSLAM2$ start_conda
(base) tan@LEGION:~/DynaSLAM2$ conda activate dynaslam2
(dynaslam2) tan@LEGION:~/DynaSLAM2$ export LD_LIBRARY_PATH=/home/tan/anaconda3/envs/dynaslam2/lib:$LD_LIBRARY_PATH
(dynaslam2) tan@LEGION:~/DynaSLAM2$ ./Examples/Monocular/mono_kitti Vocabulary/ORBvoc.txt Examples/Monocular/KITTI00-02.yaml /home/tan/dataset/data_odometry_gray/dataset/sequences/00
每次运行之前可以先手动导入一下,也可以直接加入到/.bashrc中,这里自己手动导入:
$ export LD_LIBRARY_PATH=/home/tan/anaconda3/envs/dynaslam2/lib:$LD_LIBRARY_PATH
再运行:
$ ./Examples/Monocular/mono_kitti Vocabulary/ORBvoc.txt Examples/Monocular/KITTI00-02.yaml /home/tan/dataset/data_odometry_gray/dataset/sequences/00
数据集: