赞
踩
您可以选择下载预编译的二进制文件或手动构建源代码。可从https://demuc.de/colmap/下载适用于 Windows 和 Mac 等平台的可执行文件以及其他资源。适用于 Linux/Unix/BSD 的可执行文件可在https://repology.org/metapackage/colmap/versions上找到。请注意,默认存储库中的 Linux/Unix/BSD 的 COLMAP 软件包不带有 CUDA 支持,需要手动编译,但在这些平台上相对较容易。
COLMAP 可以通过命令行或图形用户界面作为独立应用程序使用。此外,COLMAP 还构建为可重用的库,即您可以将 COLMAP 包含并链接到您自己的源代码中,下面将进行进一步描述。
为了方便起见,Windows 的预编译二进制文件包含图形和命令行界面的可执行文件。要启动 COLMAP 图形用户界面(GUI),您可以简单地双击 COLMAP.bat
批处理脚本,或者从 Windows 命令行或 Powershell 运行它。命令行界面也可以通过此批处理脚本访问,该脚本会自动设置必要的库路径。要列出可用的 COLMAP 命令,请在命令行 shell cmd.exe
或 Powershell 中运行 COLMAP.bat -h
。
Mac 的预编译应用程序包含 COLMAP 的图形和命令行版本。要打开 GUI,只需打开应用程序,并注意 COLMAP 作为未签名应用程序提供,即,当您首次打开应用程序时,您必须右键单击应用程序,选择打开,然后接受信任应用程序。以后,您只需双击应用程序即可打开 COLMAP。通过运行打包的二进制文件 COLMAP.app/Contents/MacOS/colmap
,可以访问命令行界面。要列出可用的 COLMAP 命令,请运行 COLMAP.app/Contents/MacOS/colmap -h
。
COLMAP 可以在所有主要平台(Linux、Mac、Windows)上轻松构建。首先,下载最新的源代码:
git clone https://github.com/colmap/colmap
在 Linux 和 Mac 上,通常推荐遵循下面的安装说明,这些说明使用系统包管理器来安装所需的依赖项。或者,还有一个 Python 构建脚本,可以在本地构建 COLMAP 及其依赖项。如果您在 Linux 或 Mac 下没有 root 访问权限,或者在 Windows 上或(集群)系统上使用时,这个脚本会非常有用。
推荐的依赖项:CUDA(至少 7.X 版本)
来自默认 Ubuntu 仓库的依赖项:
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
配置和编译COLMAP
git clone https://github.com/colmap/colmap.git
cd colmap
mkdir build
cd build
cmake .. -GNinja
ninja
sudo ninja install
运行COLMAP:
colmap -h
colmap gui
为了编译支持 CUDA 的 COLMAP,请同时安装 Ubuntu 默认的 CUDA 包:
sudo apt-get install -y \
nvidia-cuda-toolkit \
nvidia-cuda-toolkit-gcc
或者,从 NVIDIA 官网手动安装最新的 CUDA。在 CMake 配置时,如果您只想在当前机器上运行 COLMAP,请将 CMAKE_CUDA_ARCHITECTURES 设置为 “native”;如果想要能够分发到其他机器,请设置为 “all” 或 “all-major”;或者设置为特定的 CUDA 架构,如 “75” 等。
在 Ubuntu 16.04/18.04 下,CGAL 的 CMake 配置脚本存在问题,您还必须安装 CGAL Qt5 包:
sudo apt-get install libcgal-qt5-dev
在Ubuntu 22.04下,使用 Ubuntu 默认的 CUDA 包和 GCC 编译时会遇到问题,您必须使用 GCC 10 来编译:
sudo apt-get install gcc-10 g++-10
export CC=/usr/bin/gcc-10
export CXX=/usr/bin/g++-10
export CUDAHOSTCXX=/usr/bin/g++-10
# ... 然后运行 CMake 针对 COLMAP 的源代码。
依赖项来自Homebrew:
brew install \
cmake \
ninja \
boost \
eigen \
flann \
freeimage \
metis \
glog \
googletest \
ceres-solver \
qt5 \
glew \
cgal \
sqlite3
配置和编译COLMAP:
git clone https://github.com/colmap/colmap.git
cd colmap
export PATH="/usr/local/opt/qt@5/bin:$PATH"
mkdir build
cd build
cmake .. -GNinja -DQt5_DIR=/usr/local/opt/qt/lib/cmake/Qt5
ninja
sudo ninja install
如果您的系统中同时安装了 Qt 6,您可能需要在配置 CMake 时临时链接您的 Qt 5 安装:
brew link qt5
cmake configuration (from previous code block)
brew unlink qt5
运行COLMAP:
colmap -h
colmap gui
推荐依赖项: CUDA(至少版本 7.X)和 Visual Studio 2019
在 Windows 系统上,建议使用 vcpkg 来构建 COLMAP:
git clone https://github.com/microsoft/vcpkg
cd vcpkg
.\bootstrap-vcpkg.bat
.\vcpkg install colmap[cuda,tests]:x64-windows
如果您想要为多个计算架构编译 CUDA,请使用:
.\vcpkg install colmap[cuda-redist]:x64-windows
更多细节请参考下一节。
请注意,Visual Studio 2022 存在一些已知的编译器错误,这可能会在编译 COLMAP 的源代码时导致崩溃。因此,推荐使用 Visual Studio 2019 来避免这些问题。
VCPKG 是一个跨平台的软件包管理器,可以方便地从头开始构建 COLMAP 及其所有依赖项。在使用 VCPKG 构建 COLMAP 之前,需要手动按照标准方式在您的平台上安装 CUDA。使用 VCPKG 编译 COLMAP,您需要运行:
git clone https://github.com/microsoft/vcpkg
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg install colmap:x64-linux
当使用 VCPKG 来编译 COLMAP 时,您可以为不同的平台(如 x64-osx、x64-windows 等)选择相应的构建选项。如果您希望在编译 COLMAP 时启用 CUDA 支持并构建所有测试,可以运行:
./vcpkg install colmap[cuda,tests]:x64-linux
以上的命令可以构建最新发布版本的COLMAP。要编译开发分支(dev branch)上的版本,而不是最新的发布版本,您可以运行:
./vcpkg install colmap:x64-linux --head
如果您想要修改 COLMAP 的源代码,您可以在命令中加上--editable --no-downloads
。或者,如果您向从另一个文件夹构建并使用vcpkg管理的依赖项,首先运行 ./vcpkg integrate install 然后配置COLMAP 如下:
cd path/to/colmap
mkdir build
cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=path/to/vcpkg/scripts/buildsystems/vcpkg.cmake
cmake --build . --config release --target colmap_main --parallel 24
如果你想将COLMAP与你自己的库包含并链接起来,最简单的方法是使用CMake作为构建配置工具。在配置COLMAP构建并运行_ninja/make install_之后,COLMAP会自动安装所有的头文件到
${CMAKE_INSTALL_PREFIX}/include/colmap
,所有的库文件到${CMAKE_INSTALL_PREFIX}/lib/colmap
,以及CMake配置到${CMAKE_INSTALL_PREFIX}/share/colmap
。
例如,编译你自己的源代码,并来与COLMAP一起使用就像使用下面的CMakeLists.txt一样简单:
cmake_minimum_required(VERSION 3.10)
project(SampleProject)
find_package(colmap REQUIRED)
# or to require a specific version: find_package(colmap 3.4 REQUIRED)
add_executable(hello_world hello_world.cc)
target_link_libraries(hello_world colmap::colmap)
使用源代码hello_world.cc
:
#include <cstdlib> #include <iostream> #include <colmap/controllers/option_manager.h> #include <colmap/util/string.h> int main(int argc, char** argv) { colmap::InitializeGlog(argv); std::string message; colmap::OptionManager options; options.AddRequiredOption("message", &message); options.Parse(argc, argv); std::cout << colmap::StringPrintf("Hello %s!", message.c_str()) << std::endl; return EXIT_SUCCESS; }
然后编译和运行你的代码:
mkdir build
cd build
export colmap_DIR=${CMAKE_INSTALL_PREFIX}/share/colmap
cmake .. -GNinja
ninja
./hello_world --message "world"
这个示例的源代码储存在doc/sample-project
。
如果您想在构建COLMAP时使用内存检测工具AddressSanitizer(build COLMAP with address sanitizer flags enabled),您需要使用一个支持ASan的最新编译器。例如,你可以在Ubuntu机器上手动安装一个最新的clang版本,然后像下面这样调用CMake:
CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake .. \
-DASAN_ENABLED=ON \
-DTESTS_ENABLED=ON \
-DCMAKE_BUILD_TYPE=RelWithDebInfo
请注意,通常将ASan与调试符号(debug symbols)结合使用,以获得有意义的跟踪信息来解决错误报告中的问题。
您需要Python和Sphinx来构建HTML文档:
cd path/to/colmap/doc
sudo apt-get install python
pip install sphinx
make html
open _build/html/index.html
或者,您也可以构建PDF、EPUB等格式的文档:
make latexpdf
open _build/pdf/COLMAP.pdf
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。