【SLAM十四讲】使用视频运行 ORB

您所在的位置:网站首页 视频号如何查看发布时间记录 【SLAM十四讲】使用视频运行 ORB

【SLAM十四讲】使用视频运行 ORB

2023-03-20 06:23| 来源: 网络整理| 查看: 265

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

若报以下错误时

在这里插入图片描述

图1-1

错误来源: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})

为了验证错误来源我分开编译后如下图所示:

在这里插入图片描述

图1-2

利用源代码中所给方法编译结果如下图所示

在这里插入图片描述

图1-3

编译时有时候会出现编译到55%左右卡住的情况,例如:在这里插入图片描述

图1-4**解决:** 修改build.sh中的make线程数。 build.sh里面的 make 处 是make j 8? 改成 make j4,不要让电脑的所有cpu资源都拿去编译(个人理解是:全部cpu资源拿去编译了,其他可能进程相当于得不到响应)

参考来源:使用摄像头或视频运行 ORB-SLAM2 SLAM14讲 第一次课后作业

其编译后的可执行文件所在

在这里插入图片描述

图1-5执行 ./myslam ,运行时报如下图所示错误也未出现窗口

在这里插入图片描述

图1-6

其中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 结果如下在这里插入图片描述在这里插入图片描述在这里插入图片描述

图1-7

小结:

路径问题(即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可执行文件都要删除)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3