myvideo练习
作业代码来源: 高博:slam1code:链接:https://pan.baidu.com/s/1vHNZWlu7X5ex5LzMSnbtrQ
提取码:34v2
具体内容如下:
myvideo文件夹的位置在: /ORB_SLAM2/Examples
其中:ORBvoc.txt文件就是DBoW2磁带的配置
myvideo.cpp修改
其位置在:/home/zhe/1/lianxi/1/ /ORB_SLAM2/Examples/myvideo/
// 参数文件与字典文件
// 如果你系统上的路径不同,请修改它(myvideo.yaml文件的属性的父文件夹/myvideo.yaml)
string parameterFile = "/home/zhe/1/lianxi/1/ /ORB_SLAM2/Examples/myvideo/myvideo.yaml";
//ORBvoc.txt文件在/home/zhe/1/lianxi/1/ORB_SLAM2/Vocabulary下复制到自己的系统路径下
string vocFile = "/home/zhe/1/lianxi/1/ /ORB_SLAM2/Examples/myvideo/Vocabulary/ORBvoc.txt";
// 视频文件
string videoFile = "/home/zhe/1/lianxi/1/ /ORB_SLAM2/Examples/myvideo/myvideo.mp4";
CMakeList.txt修改
其位置在:/home/zhe/1/lianxi/1/ /ORB_SLAM2/
1.仿照单目来写,,单目对应程序如下
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})
2.myvideo的修改为
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples/Monocular/myvideo)//文件夹名
add_executable(myvideo
Examples/Monocular/myvideo.cpp)
target_link_libraries(myvideo ${PROJECT_NAME})
修改后参照README.md来 编译运行(README.md所在位置:/home/zhe/1/lianxi/1/ORB_SLAM2)
注意非首次跑时,及运行下面编译时,先删除ORB_SLAM2;/ORB_SLAM2/Thirdparty/DBoW2和/ORB_SLAM2/Thirdparty/g2o下的三个build文件
chmod +x build.sh //赋予其权限
./build.sh
若报以下错误时
错误来源:myvideo.cpp找不到正确的来源修改如下
2.myvideo的修改为
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples/myvideo)//文件夹名
add_executable(myvideo
Examples/myvideo/myvideo.cpp)
target_link_libraries(myvideo ${PROJECT_NAME})
为了验证错误来源我分开编译后如下图所示:
利用源代码中所给方法编译结果如下图所示
编译时有时候会出现编译到55%左右卡住的情况,例如:
参考来源:使用摄像头或视频运行 ORB-SLAM2 SLAM14讲 第一次课后作业
其编译后的可执行文件所在
其中terminate called after throwing an instance of ‘cv::Exception’
terminate called after throwing an instance of 'cv::Exception'
what(): OpenCV(3.4.14) /home/zhe/1/orb-slam/OpenCV 3.4.14/opencv-opencv-6dd4e87/modules/highgui/src/window.cpp:641: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvNamedWindow'
提示安装libgtk2.0-dev 和 pkg-config
sudo apt-get install libgtk2.0-dev来解决,错误不变但是会出现窗口闪退
安装pkg-config 来源Ubuntu 16.04 下pkg-config的安装与简介
出现Makefile:696: recipe for target ‘install-recursive’ failed错误
需要重装opencv3.2安装链接:在ubuntu18.04中安装opencv_contrib-3.2.0采坑教程
后重新编译,运行即可解决如图1-7所示的错误,最终运行 ./myslam 结果如下
小结:
-
路径问题(即myvideo.cpp未找到正确的来源)
-
注意非首次编译时,应先删除ORB_SLAM2;/ORB_SLAM2/Thirdparty/DBoW2和/ORB_SLAM2/Thirdparty/g2o下的三个build文件
-
运行./myvideo时,缺少相应的配置以及版本不匹配问题
缺少libgtk2.0-dev 和 pkg-config有如上图1-6所示的错误,并且Map Viewer窗口也没有出现按照提示安装sudo apt-get install libgtk2.0-dev来后,原本错误还在并且会出现Map Viewer窗口闪退现象。最好后是重装opencv重新编译运行解决上述问题。(在重新编译运行之前的三个build文件和myvideo可执行文件都要删除)