Colmap按照官网的编译方式需要预装好CMake,Boost,QT5,CUDA和CGAL

依赖库

1.cmake

安装参考:cmake安装_滑稽的猴子的博客-CSDN博客

解压后将bin目录添加到环境变量Path中。如图:

2.Boost

安装参考:boost安装_滑稽的猴子的博客-CSDN博客

下载以后双击运行解压到一个文件夹下就好,这里我默认解压到了C盘。其中一定要有对应版本的lib库

并添加环境变量:

 3.QT5

 安装参考:QT5安装_滑稽的猴子的博客-CSDN博客

并添加环境变量:

4.CUDA

安装CUDA的教程很多,这里不再赘述。COLMAP的CUDA按照官网的说法是可选择的安装。

 5.CGAL

安装参考:

官网下载页面:Download CGAL for Windows

 下载红色框框圈住的两个文件。上面的那个就是必要的依赖项

将CGAL-5.2.1.zip解压到 D:\dev 文件夹下,将GMP and MPFR libraries解压后的gmp文件夹复制到 D:\dev\CGAL-5.2.1\auxiliary 文件夹中。

 

 

并添加环境变量:

 colmap安装

上述依赖安装完毕后就可以开始编译colmap了。

编译前检查一下环境变量是否都有了:

colmap下载链接:Releases · colmap/colmap · GitHub

这里我下载编译的是dev版本。下载完是一个压缩包,解压到自己想放的文件目录即可。

编译推荐官网的python脚本编译方式,因为这种编译方式会帮你自动下载需要的依赖库,比自己用CMake方便很多。

打开cmd指令窗口,输入:

Python C:\Users\86130\Desktop\COLMAP-3.8-windows-cuda\colmap-3.8\scripts\python\build.py --build_path C:\Users\86130\Desktop\COLMAP-3.8-windows-cuda\colmap-3.8\build --colmap_path C:\Users\86130\Desktop\COLMAP-3.8-windows-cuda\colmap-3.8 --boost_path "C:/local/boost_1_82_0/lib64-msvc-14.3" --qt_path "C:\Qt\Qt5.14.2\5.14.2\msvc2017_64" --cuda_path "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.2"

注意,上述代码中的路径都是我的文件路径,一定要改成自己安装各个文件时的对应路径

编译过程中网络状况要良好,他会自行下载一些依赖库:

编译完成后,会在源代码文件目录下生成build文件:

编译完成后,会在源代码文件目录下生成build文件:

 打开COLMAP.sln

点击colmap.bat就可以运行了

安装问题

1.依赖库在线下载失败,包括Eigen,FreeImage,glew和ceres相关库:urlopen error 推荐方法使用脚本自动安装的方法,是在线下载colmap依赖的几个库。如果网络受限,比如不能翻墙下载慢,py文件中url无效,都没法正常安装,有时候等待很长时间,或者出现下图的报错:

所以如果有这些库的源代码,直接放在py中指定的文件夹。

打开build.py,其实它的功能就是下载库,解压,移动到__ install__文件夹中,然后cmake编译生成安装。无法下载,我们可以注释掉py文件中下载解压部分,直接开始编译安装,只要修改好py中对应的名字,即可。

2.Glew编译失败,glew.obj : error LNK2019: 无法解析的外部符号 memset,该符号在函数 glewContextInit 中被引用 使用build.py自动编译glew,还会出现以上报错。打开glew的sln,在debug下,打开glew_s的属性管理器–》附加依赖项-》添加msvcrt.lib,重新生成项目即可。

3.suiteparse和ceres可能遇到的问题:找不到lib文件 问题大同小异,可以参考我另外一篇博客。如果build.py出了问题,单独编译suiteparse和ceres也可以,但是注意要把生成的include和lib安装到.py中要求的文件夹中。

4.(vs 2019)编译错误:boost无法解析的外部符号

前面都编译成功了,colmap静态库也生成了,开始链接,生成exe文件,出现下面报错:

**原因:**未知。同样的方法,在vs2017中未出现,vs2019编译就出问题,可能是编译器导致

解决办法:手动打开colmap工程,将colmap_exe工程的release下附加依赖项关于boost相关的 libboost_xxx全部修改为boost_xxx。直接用vs生成该项目,继续在py文件中注释一些函数,运行py把一些依赖的项复制好。  

参考文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。