编译运行openvslam

在编译openvslam的过程中遇到了如下几个问题:
1、有关opencv中undistortPoints函数参数的问题:opencv版本过低,选用高版本即可。
2、pangolin中函数was not declared。参考https://blog.csdn.net/liudahanghang/article/details/80601136
把pangolin版本回退到文档中指定的ad8b5f8即可。
3、报错如下:
/home/yasaburo3/project/openvslam/test/openvslam/data/bow_vocabulary.cc:38:26: error: ‘util’ has not been declared
bow_vocab->transform(util::converter::to_desc_vec(desc1), bow_vec_1, bow_feat_vec_1, 4);
^~~~
/home/yasaburo3/project/openvslam/test/openvslam/data/bow_vocabulary.cc:39:26: error: ‘util’ has not been declared
bow_vocab->transform(util::converter::to_desc_vec(desc2), bow_vec_2, bow_feat_vec_2, 4);

找到出现问题的代码:

#ifdef USE_DBOW2
    bow_vocab->transform(util::converter::to_desc_vec(desc1), bow_vec_1, bow_feat_vec_1, 4);
    bow_vocab->transform(util::converter::to_desc_vec(desc2), bow_vec_2, bow_feat_vec_2, 4);
#else
    bow_vocab->transform(desc1, 4, bow_vec_1, bow_feat_vec_1);
    bow_vocab->transform(desc2, 4, bow_vec_2, bow_feat_vec_2);
#endif

这里说明在使用DBoW2的情况下会用util::converter,干脆直接用FBoW了,在编译的时候,添加设置:

-DBOW_FRAMEWORK=FBoW

4、

/usr/bin/ld: warning: libavcodec-ffmpeg.so.56, needed by /usr/local/opencv-4.3.0/build/lib/libopencv_videoio.so.4.3.0, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libavformat-ffmpeg.so.56, needed by /usr/local/opencv-4.3.0/build/lib/libopencv_videoio.so.4.3.0, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libavutil-ffmpeg.so.54, needed by /usr/local/opencv-4.3.0/build/lib/libopencv_videoio.so.4.3.0, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libswscale-ffmpeg.so.3, needed by /usr/local/opencv-4.3.0/build/lib/libopencv_videoio.so.4.3.0, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libopencv_core.so.3.2, needed by //usr/local/lib/libfbow.so, may conflict with libopencv_core.so.4.3

后面是一堆未定义的引用。
找到这个库,ldd一下,确实是找不到这几个库

ldd libopencv_videoio.so.4.3.0

libavcodec-ffmpeg.so.56 => not found
libavformat-ffmpeg.so.56 => not found
libavutil-ffmpeg.so.54 => not found
libswscale-ffmpeg.so.3 => not found

但x86_64-linux-gnu文件夹里面有很多类似名字的库:

/usr/lib/x86_64-linux-gnu$ ls libavcodec*
libavcodec.a   libavcodec.so.57          libavcodec.so.58
libavcodec.so  libavcodec.so.57.107.100  libavcodec.so.58.35.100

我猜是这个库更新了之后名字改了?尝试创建软链接之后并没有效果。

整理一下问题:
使用DBoW2时util报错 -> 改用FBoW -> opencv4报错 -> 改用ubuntu自带的opencv3.2.0 -> 版本不够(至少3.3.1)
所以只好重新装了一个opencv3.4.0,在安装的过程中又遇到了很多坑,花了一整天的时间,才把opencv也搞定。
最后使用opencv3.4.0,以及FBoW,终于跑通了。

./run_euroc_slam\
>  -v /home/yasaburo3/Documents/FBoW_orb_vocab-main/orb_vocab.fbow\
>  -d /home/yasaburo3/Datasets/EuRoC/MH_01_easy/mav0\
>  -c ../example/euroc/EuRoC_mono.yaml

参考:https://blog.csdn.net/xiangxianghehe/article/details/90600396
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值