教程
https://colmap.github.io/install.html
0前提
r9000k 3070显卡
opencv3.4.9
0-0如果有acoda先从环境变量去掉,以免导致多重库问题
0-1更新C++11
起作用 source ~/.bashrc
sa添加相应的源
1
|
sudo add-apt-repository ppa:ubuntu-toolchain-r/test |
更新软件源
1
|
sudo apt- get update |
安装最新版gcc
1
2
|
sudo apt- get install gcc-11 sudo apt- get install g++-11 |
0-2安装依赖
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
qtbase5-dev 和libqt5opengl5-dev 报错版本依赖问题装不上,导致后面QT编译错误
解决
手动安装下面的只定版本库 最后在装 qtbase5-dev
报错信息
qtbase5-dev : 依赖: libqt5concurrent5 (= 5.12.8+dfsg-0ubuntu2.1) 但是它将不会被安装 依赖: libqt5printsupport5 (= 5.12.8+dfsg-0ubuntu2.1) 但是它将不会被安装 依赖: libqt5sql5 (= 5.12.8+dfsg-0ubuntu2.1) 但是它将不会被安装 依赖: libqt5test5 (= 5.12.8+dfsg-0ubuntu2.1) 但是它将不会被安装 依赖: libqt5xml5 (= 5.12.8+dfsg-0ubuntu2.1) 但是它将不会被安装 依赖: qtbase5-dev-tools (= 5.12.8+dfsg-0ubuntu2.1) 推荐: libqt5opengl5-dev (= 5.12.8+dfsg-0ubuntu2.1) 但是它将不会被安装 E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。 下列软件包有未满足的依赖关系: libqt5opengl5-dev : 依赖: libqt5opengl5 (= 5.12.8+dfsg-0ubuntu2.1) 但是 5.15.8.1-1+dde 正要被安装 依赖: qtbase5-dev (= 5.12.8+dfsg-0ubuntu2.1) 但是它将不会被安装
如果已经装了 卸载 安装 sudo install apt-get libqt5concurrent5 = 5.12.8+dfsg-0ubuntu2.1 sudo install apt-get libqt5printsupport5 = 5.12.8+dfsg-0ubuntu2.1 sudo install apt-get libqt5sql5 = 5.12.8+dfsg-0ubuntu2.1 sudo install apt-get libqt5test5 = 5.12.8+dfsg-0ubuntu2.1 sudo install apt-get libqt5xml5 = 5.12.8+dfsg-0ubuntu2.1 sudo install apt-get qtbase5-dev-tools = 5.12.8+dfsg-0ubuntu2.1 sudo install apt-get libqt5opengl5-dev = 5.12.8+dfsg-0ubuntu2.1 报错的话 sudo install apt-get libqt5opengl5-dev 最后 sudo install apt-get qtbase5-dev
还不行在用下面的方法替换将级现有的库,或者删除在手动一个个装依赖库
依赖关系解决问题
sudo apt-get install aptitude
全部选择y统一
sudo aptitude -f install qtbase5-dev
sudo aptitude -f install libqt5opengl5-dev
后面选择y
QOpenGLWidget: Failed to create context
如果保证个错
sudo apt-get install build-essential sudo apt-get install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools sudo apt-get install qt5*
关机重启
0-3 安装ceres(没必要)
如果要适配openvslam,需要限定下版本
https://www.cnblogs.com/gooutlook/p/16309889.html
1 编译工程
报错1
Or, manually install latest CUDA from NVIDIA’s homepage. During CMake configuration specify CMAKE_CUDA_ARCHITECTURES as “native”, if you want to run COLMAP on your current machine only, “all”/”all-major” to be able to distribute to other machines, or a specific CUDA architecture like “70”, etc.
添加
122行 启用cuda
set(CMAKE_CUDA_ARCHITECTURES "native") # 添加
报错2
ptxas fatal : Value 'sm_30' is not defined for option 'gpu-name'
查询
apt-cache policy nvidia-cuda-toolkit
编译
git clone https://github.com/colmap/colmap.git cd colmap git checkout dev mkdir build cd build cmake .. -GNinja ninja sudo ninja install
验证colmap
colmap -h colmap gui
安装pycolmap
https://github.com/colmap/pycolmap
pip install pycolmap
conda create -n colmap python=3.7 conda activate colmap
报错2 pybind11缺少
Unknown CMake command "pybind11_add_module".
第三方库没下载,需要手动下载在文件夹子
git clone https://github.com/pybind/pybind11.git
重新安装