Windows系统下COLMAP的编译可以分为三部分:(1)手动下载安装Boost、Qt、CGAL、CUDA(Boost和CGAL也可以用vcpkg安装);(2)利用vcpkg安装glew、freeimage、ceres等库(3)最后在colmap源代码目录下的build文件夹打开cmd,输入cmake命令生成解决方案
CMake、Git、Visual Studio 2019、Vcpkg等提前安装好,vcpkg和git可以参考博客
并在系统环境变量中添加CMake和Git,如下所示:
注意:环境变量换成自己安装的位置,切勿照搬。VS2019一定要安装英文版!!!(为了方便vcpkg)。
COLMAP官方安装指南首推vcpkg安装,其次利用python安装脚本,如下所示:
从中可以推测需要我们自己安装的主要就是boost、qt、cuda和cgal。
python scripts/python/build.py \
--build_path path/to/colmap/build \
--colmap_path path/to/colmap \
--boost_path "C:/local/boost_1_64_0/lib64-msvc-14.0" \
--qt_path "C:/Qt/5.9.3/msvc2015_64" \
--cuda_path "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v8.0" \
--cgal_path "C:/dev/CGAL-4.11.2/build"
以下为参考博客的摘抄:
1)打开cmd,进入boost文件夹,有一个批处理文件bootstrap.bat。
2)在cmd输入命令bootstrap.bat,运行结束会出现b2.exe或者bjam.exe(没区别,作者是两个都生成了)。
3)然后在cmd输入命令bjam.exe。会出现一个文件夹lib64-msvc,里面装着boost的各种库。
ps:这里可能在运行了bjam之后没有出现这个文件夹(作者本人就是),
重新输入命令bjam install --toolset=msvc-14.1 address-model=64 --prefix=“D:\remote-sensing\colmap\boost_1_64_0\lib64” link=static runtime-link=shared threading=multi debug release。(VS2019改为msvc-14.2,prefix路径改成自己对应的路径)生成lib64文件夹,lib64->lib中装着boost的库。
我的安装目录如下,其中msvc-14.2指的是VS2019:
以下内容为参考博客的摘抄:
CUDA下载,第一次会让设置临时解压目录,第二次会让设置安装目录,解压目录之后会消失,不要选择相同目录做安装目录。
安装目录建议直接选择默认路径,我的默认安装路径为:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2
安装时选择“自定义安装”,不选“精简”。选择程序组件时,注意不要勾选“Nsight Systems”,“Nsight Compute”。
“CUDA”下的 “Runtime”、“Development”、“Documentation”、“Samples”,这四项是必选的
下述的其他选项根据情况自己选择即可,安不安装应该关系不大:
打开cmd输入nvidia-smi可查找驱动的版本,如下所示。我电脑的驱动版本是462.30,最高可支持CUDA11.2版本。
但实际上我只装了CUDA10.2版本,输入nvcc --version可以查看,如下所示:
COLMAP的Cmakelist.txt写了这样一句,
message(STATUS “Enabling CUDA support (version:
${CUDA_VERSION_STRING},”
" archs: ${CUDA_ARCH_FLAGS_readable})")
具体到CMake的编译LOG为:
说明该句可以显示安装CUDA的版本以及算力版本,编译一些CUDA代码时候就需要填写sm_75。
Qt官方下载地址
以5.14.2为例,进入网站后依次进入:5.14>5.14.2>qt-opensource-windows-x86-5.14.2.exe,下载exe.
一般安装以下几种:
注意Qt版本:MSVC和MinGW版本的区别。msvc使用的是vs的编译器,这个版本主要用于PC开发;MinGW版本使用MinGW编译器,主要用于跨平台开发。两个版本的Qt配置方式完全不同。因此,为了能是colmap-gui能正常运行,必须安装qt-msvc,同时添加环境变量如下所示。
从5.0版本开始,CGAL仅是一个头文件库,这意味着CGAL无需编译,只需安装好CGAL的依赖项即可。
CGAL的GitHub下载两个zip:
auxiliary解压后放到CGAL-5.5里面
我在安装colmap之前已经用vcpkg安装OpenMVS时已经装过CGAL。
在 vcpkg安装目录下输入:vcpkg list cgal, 可以查看CGAL安装的版本是5.5,如下所示。
没有安装则输入:vcpkg install cgal::x64-windows
以下内容来自参考博客:
如果是手动安装的话,非常麻烦,所以这里通过vcpkg 方式来安装
vcpkg install ceres[suitesparse,cxsparse]:x64-windows --recurse
同时在C:\local\dev\vcpkg\packages\ceres_x64-windows\share\ceres(根据你的vcpkg安装目录设置)路径下修改CeresConfig.cmake,将其改成如下(否则cmake无法找到ceres)
如果已经安装并编译了boost,且系统环境变量已添加,那么可以不用vcpkg安装boost,CGAL同理。
这里安装完毕后,需要去修改colmap 的CmakeLists,如下:(windows 太坑,区分大小写)
打开cmd,进入colmap 3.7/build 文件夹,输入命令:
cmake -G "Visual Studio 16 2019" -DCMAKE_TOOLCHAIN_FILE=C:\local\dev\vcpkg\scripts\buildsystems\vcpkg.cmake ..
其中"Visual Studio 16 2019"表示我电脑上的安装的是VS2019,"DCMAKE_TOOLCHAIN_FILE="后面的路径替换成你的vcpkg安装地址。
打开cmd,进入目录(换成你的路径)\colmap-3.7\build\src\exe\Release,输入colmap -h可以查看使用说明,输入colmap gui可以打开窗口程序。