GLOMAP-实现(更新中)

一、glomap的编译

根据官网(GitHub - colmap/glomap: GLOMAP - Global Structured-from-Motion Revisited)信息,目前应该是只支持Linux。

从论文中看,glomap是基于COLMAP, PoseLib, Theia的,官方的仓库也是来自colmap621404be8a814e3081466c574b7e0263.png

因此,glomap需要colmap中所有的依赖

sudo apt-get install \
    git \
    cmake \
    ninja-build \
    build-essential \
    libboost-program-options-dev \
    libboost-filesystem-dev \
    libboost-graph-dev \
    libboost-system-dev \
    libeigen3-dev \
    libflann-dev \
    libfreeimage-dev \
    libmetis-dev \
    libgoogle-glog-dev \
    libgtest-dev \
    libsqlite3-dev \
    libglew-dev \
    qtbase5-dev \
    libqt5opengl5-dev \
    libcgal-dev \
    libceres-dev

然后,按照官网步骤来完成编译,自然而然地:

mkdir build
cd build
cmake .. -GNinja
ninja && ninja install

二、出现的问题

2.1glomap本身

到这里,glomap地编译不出意外的话就会出意外了。。。

在一个云服务器中,有这样的报错,在Ubuntu主机中应该会出现:按照gpt4的解释,这是缺少cholmod.h,而这个文件来自libsuitesparse-dev。

65af5fdbe4d449b28b1d144b986355f6.png

另外,我在issue中,找到了“同道中人”,附上链接:https://github.com/colmap/glomap/issues/7

,后面有一个人的回答非常有用:

fe909764a5ab4e74882d45c454a42db4.png

按照这样的步骤,glomap顺利编译!

sudo apt-get libceres-dev
sudo apt-get libsuitesparse-dev
cmake .. \
            -GNinja \
            -DCMAKE_CUDA_ARCHITECTURES=75 \
            -DSuiteSparse_CHOLMOD_LIBRARY="/usr/lib/x86_64-linux-gnu/libcholmod.so" \
            -DSuiteSparse_CHOLMOD_INCLUDE_DIR="/usr/include/suitesparse"
sudo ninja 
sudo ninja install

附上我的图,我一开始搞错了,重新编译:

5e6395e5222c4d8c95193f74caca2721.png

975044fa5df04f05ad89961951e6deb8.png

上面代码中间有一行cuda_architectrues=75,这个是指定了GPU的算力型号,这是是属于编译colmap过程中的问题,详情可以查看我的另一篇文章:colmap三维重建(更新中)——Ubuntu版本(colmap的编译)_ubuntu22.04 colmap-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_74310646/article/details/138027524?spm=1001.2014.3001.5501

2.2关于cmake

在按照上述过程编译的时候,还会碰见另一个bug,就是cmake的版本,终端中会提示:要求的cmake版本>=3.28。作者在随后也有提到:

GLOMAP 依赖于两个外部库 - COLMAP 和 PoseLib。在默认设置下,该库由 GLOMAP 通过 FetchContent 自动构建。但是,如果首选自行安装的版本,还可以禁用 FETCH_COLMAP 和 FETCH_POSELIB CMake 选项。

要使用 FetchContent,cmake 的最低版本要求是 3.28。如果使用自装版本,cmake可以降级到3.10

如果要使用高版本cmake,建议重新安装:

官网给的方法是:

wget https://github.com/Kitware/CMake/releases/download/v3.30.1/cmake-3.30.1.tar.gz
tar xfvz cmake-3.30.1.tar.gz && cd cmake-3.30.1
./bootstrap && make -j$(nproc) && sudo make install

gpt给的方法是:

如果你安装了新的 CMake 版本(例如 3.30),你可以选择如何处理旧版本(3.22)。以下是几种常见的处理方法:

1. 保留旧版本

保留旧版本不会影响新版本的使用,特别是如果你已经确保环境变量中指向的是新版本的 CMake。你可以通过运行 cmake --version 来验证当前使用的版本。旧版本可能在某些特定的项目中仍然有用,但如果不需要,可以选择删除。

2. 删除旧版本

#如果不再需要旧版本,可以选择删除它。请确保删除的是旧版本而不是新版本。通过APT删除旧版本:
#如果你是通过APT安装的 CMake 3.22,可以用以下命令卸载:
sudo apt-get remove --purge cmake

删除旧版本的手动安装目录:

#如果旧版本是手动安装的,你需要找到旧版本的安装路径并删除它。
#例如,如果旧版本安装在 /usr/local/bin 中,你可以使用以下命令删除:
sudo rm /usr/local/bin/cmake

3.安装新版本

wget https://github.com/Kitware/CMake/releases/download/v3.30.1/cmake-3.30.1-linux-x86_64.sh
#为下载的 .sh 文件赋予执行权限
chmod +x cmake-3.30.1-linux-x86_64.sh
#运行脚本进行安装
sudo path/to/cmake-3.30.1-linux-x86_64.sh
#验证
cmake --version
#更新环境变量
which cmake
export PATH=/path/to/cmake/bin:$PATH
source ~/.bashrc  # 或者 source ~/.zshrc

附上我的:

f7608a1b099e4be8bb75ef627f61f5a2.png

三、效果如何(即将更新)

先放两个图

01da3fab77b44ac79a3552255a910010.png

3efb57566ab54766890481f3d14a7592.png

324313e265ec4805b303c5fca6d4827c.png

  • 23
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值