- 写于 2024/01//26
- 更新于 2024/05/23
目录
2)修改ceres的CeresConfig.cmake的内容
20240826记:在当今技术驱动的世界中,快速学习和掌握新技术已经成为开发者的核心竞争力之一,而对于那些渴望深入理解和掌握复杂项目的开发者来说,学习并正确使用源码是一项至关重要的技能,在以前,对于源码的阅读是需要学习者有足够的经验,而现在的时代,AI的兴起,大大降低了源码阅读的门槛。这几年大模型的兴起,打开了新时代的大门,想要在这个时代快速地成长和生存,利用好AI进行辅助学习显然已经成为一种大趋势,我们应该抓住一切能加速自己成长的机会。国内的大模型有文心一言,豆包等,国外的大模型Chatgpt、Claude等,无一不可以辅助自己编程的学习,这里给大家推荐一个我自己在用的集成Chagpt和Claude的网站(国内可用,站点稳定,博主用了两个月了):传送门。
一、配置前的准备
1. cmake
具体安装请参阅:
Windows下的CMake详细安装教程(2024/1/24)-CSDN博客
2. Vcpkg
C/C++的包管理——Vcpkg(2024/01/25)-CSDN博客
3. Visual Studio要修改带有【英语】语言
具体方式请阅读:
C/C++的包管理——Vcpkg(2024/01/25)-CSDN博客
4. 设置环境变量(option)
①右键点击【此电脑】,选择【属性】-->【高级系统设置】
②选择【环境变量】
③在系统变量中点击【新建】,设置好下图所示【变量名】和【变量值】,点击【确定】
5. cuda(option)
建议安装上,否则应在colmap的CmakeLists.txt中禁用cuda
具体安装请参阅:
Windows下的CUDA与cuDNN详细安装教程(2024/01/26)-CSDN博客
注意: 虽然禁用CUDA仍能通过编译
但是只有装了CUDA的才可以进行MVS,否则只能过SFM的稀疏重建
二、克隆与编译
写在前边:
1.由于colmap用到qt5,未防止不必要的错误,请在编译之前对你的Anaconda安装文件夹重命名,编译colmap完成之后再恢复之前的命名
2.为避免一些bug,colmap编译要用VS2019,不要用VS2022,官方文档中也提到:
1. 克隆部分
使用git运行如下命令:
git clone https://github.com/colmap/colmap.git
如果遇到网络问题,请前往如下网址自行下载源码压缩包:colmap/colmap: COLMAP - Structure-from-Motion and Multi-View Stereo (github.com)
2. 编译部分
1)使用Vcpkg安装依赖
.\vcpkg install boost:x64-windows metis:x64-windows flann:x64-windows freeimage:x64-windows yasm-tool:x86-windows eigen3:x64-windows cgal:x64-windows qt5-base:x64-windows glew:x64-windows glfw3:x64-windows ceres:x64-windows
安装完成后,再次运行安装依赖命令,见到如下图所示即代表安装完成:
The versions are as follows:
boost:x64-windows@1.84.0
ceres:x64-windows@2.1.0#4
cgal:x64-windows@5.6
eigen3:x64-windows@3.4.0#3
flann:x64-windows@2019-04-07#7
freeimage:x64-windows@3.18.0#25
glew:x64-windows@2.2.0#3
glfw3:x64-windows@3.3.9
metis:x64-windows@2022-07-27
qt5-base:x64-windows@5.15.12#1
yasm-tool:x86-windows@2021-12-14
这里要注意:由于我之前在使用Vcpkg配置OpenMVS时,已安装过部分依赖(见文章安装依赖部分 ),在你接下来运行cmake编译时,可能会遇到Cmake Error,找不到某个或多个依赖的情况
形如:
CMake Error in src/colmap/sensor/CMakeLists.txt:
Imported target "freeimage::FreeImage" includes non-existent path"E:/srcCode/colmap/FREEIMAGE_INCLUDE_DIRS-NOTFOUND"
in its INTERFACE_INCLUDE_DIRECTORIES. Possible reasons include:
* The path was deleted, renamed, or moved to another location.
* An install or uninstall procedure did not complete successfully.
* The installation package was faulty and references files it does not
provide.
那么解决方案如下:
使用Vcpkg安装所缺少的依赖:.\vcpkg install freeimage:x64-windows
当然也可以手动编译,这里不再赘述
2)修改ceres的CeresConfig.cmake的内容
①找到你的vcpkg路径,进入path to vcpkg\packages\ceres_x64-windows\share\ceres
②使用Notepad++打开ceres文件夹下的CeresConfig.cmake
③将71和72行的FALSE修改为TRUE
注意:在别的colmap编译教程中,有写到在Windows平台需要修改Colmap的CmakeLists.txt内容的,在3.10-dev,3.9.1,3.9版本的Colmap中,CmakeLists.txt已经被官方修改,与之前版本的有所不同,读者不必再修改其中的任何内容,直接按照该教程向下编译即可。如果读者使用之前的版本,即3.8及之前的版本,则需要修改CmakeLists.txt的内容,具体修改可参阅下述教程(非本人写):
Colmap编译教程及笔记 [Windows+VS2019+Vcpkg]-CSDN博客
3)编译
①在colmap中新建名为build的文件夹
②在build文件夹中右键打开终端,输入:
cmake .. ..\src -G "Visual Studio 16 2019" -A x64 -DCMAKE_TOOLCHAIN_FILE=E:\myVcpkg\vcpkg\scripts\buildsystems\vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows -D CMAKE_CUDA_ARCHITECTURES="70;75;80;86"
参数:
cmake .. ..\src
:
cmake
:调用CMake命令行工具。..
:指定CMakeLists.txt文件所在的目录,这里是上一级目录。..\src
:指定源码目录为上一级目录中的src文件夹。
-G "Visual Studio 16 2019"
:
-G
:指定生成器,这里选择的是Visual Studio 2019。
-A x64
:
-A
:指定体系结构,这里选择的是x64,即生成64位版本的程序。
-DCMAKE_TOOLCHAIN_FILE=E:\myVcpkg\vcpkg\scripts\buildsystems\vcpkg.cmake
:
-D
:设置一个CMake变量。CMAKE_TOOLCHAIN_FILE
:指定工具链文件,这里使用的是vcpkg的工具链文件路径。
-DVCPKG_TARGET_TRIPLET=x64-windows
:
-D
:设置一个CMake变量。VCPKG_TARGET_TRIPLET
:指定vcpkg的目标三元组,这里选择的是x64-windows,即使用vcpkg管理的64位Windows平台的库。
-D CMAKE_CUDA_ARCHITECTURES="70;75;80;86"
:
-D
:设置一个CMake变量。CMAKE_CUDA_ARCHITECTURES
:指定CUDA架构,这里包含了70、75、80、86四种架构,分别对应不同的NVIDIA GPU型号。
其中,参数-G "Visual Studio 16 2019",可通过在终端运行cmake -G查看
如下图所示则编译通过:
文件夹内容如下:
4)生成/Build
①使用VS2019打开【COLMAP.sln】
②在解决方案资源管理器里,展开【cmake】,在【ALL_BUILD】上右键选择【生成/build】,等待即可
根据需要选择Debug/Release模式
6)当出现如下错误:
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C1128 节数超过对象文件格式限制: 请使用 /bigobj 进行编译 colmap_estimators E:\srcCode\colmap\src\colmap\estimators\fundamental_matrix.cc 1
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C1128 节数超过对象文件格式限制: 请使用 /bigobj 进行编译 colmap_estimators E:\srcCode\colmap\src\colmap\estimators\bundle_adjustment.cc 1
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C1128 节数超过对象文件格式限制: 请使用 /bigobj 进行编译 colmap_estimators E:\srcCode\colmap\src\colmap\estimators\absolute_pose.cc 1
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 D8040 创建子进程或与子进程通讯时出错 colmap_estimators E:\srcCode\colmap\build\src\colmap\estimators\cl 1
解决方案如下:
①在解决方案上右键,打开【属性】
②将启动项设置为【当前选定内容】
③双击报错,跳转到报错项目
④点击【项目】-->【属性】
⑤找到【C/C++】-->【命令行】,在最后添加如下内容,并点击【应用】:
/bigobj
注意:这里有一个空格,即是 空格+/bigobj
如果你的内容为空,那么只需要添加/bigobj即可
③回到【ALL_BUILD】,右键选择【重新生成】
可以看到已全部生成成功
2. 开启GUI
在路径:build\src\colmap\exe\Debug中右键打开终端,输入:
.\colmap.exe gui
看到如下界面弹出,即代表正常:
至此,整个colmap配置流程完成
转载请标明出处
如果还有问题,欢迎在评论区留言或私信
作者:BQ
主页:bqcode.blog.csdn.net
qq群:958124241
Learn Together!