COLMAP安装问题汇总

2023-10-08 07:12
文章标签 问题 安装 汇总 colmap

本文主要是介绍COLMAP安装问题汇总,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题目录

  • 问题0、没有root权限怎么安装colmap?
  • 问题1、ERROR: SiftGPU not fully supported/Could not connect to any X display
  • 问题2、Cannot specify include directories for imported target "freeimage::FreeImage".
  • 问题3、could not find ZL4
  • 问题4、Unable to locate package nvidia-cuda-toolkit-gcc
  • 问题5、需要设置CMAKE_CUDA_ARCHITECTURES

本文解决在Linux下安装COLMAP时候遇到的如下问题:没有root权限怎么安装colmap?ERROR: SiftGPU not fully supported/Could not connect to any X display。Cannot specify include directories for imported target “freeimage::FreeImage”。could not find ZL4。Unable to locate package nvidia-cuda-toolkit-gcc。需要设置CMAKE_CUDA_ARCHITECTURES。

问题0、没有root权限怎么安装colmap?

问题:如果你在实验室里面,发现自己没有权限,无法安装colmap的依赖包。

解决方案:跑到实验室管理账号的大师兄(管理员)面前嚎啕大哭!诉求:1、师兄帮我装colmap。2、跪到地上求师兄给个临时的root权限,不给就赖着不走,抱着他的腿使劲哭。3、把需要root命令的地方发给大师兄、管理员,让他用sudo权限执行这几条命令。4、最后,记得客客气气的夸师兄,并请师兄吃好吃的。

问题1、ERROR: SiftGPU not fully supported/Could not connect to any X display

问题:今天是2023年10月7日,COLMAP已经支持GPU计算一些步骤,当设备包含显卡的时候,通过sudo apt install colmap不能正常使用,导致出现SiftGPU不支持、或者需要显示器的支持。

原因:是sudo apt install colmap导致的,这种预编译的包与自己的设备显卡不适配。

解决方案:卸载apt install的colmap,自己编译一遍。卸载:sudo apt remove colmap,自己安装参见colmap tutorial以及我下文的踩坑记录。

参考:

  • [1] WSL 2下Linux Colmap出错“Shader not supported by your hardware!“和“SiftGPU not fully supported“

问题2、Cannot specify include directories for imported target “freeimage::FreeImage”.

git clone https://github.com/colmap/colmap.git
cd colmap
git checkout dev
mkdir build
cd build
cmake .. -GNinja
ninja
sudo ninja install

问题:在Linux上安装colmap的时候,运行到cmake .. -GNinja这一句的时候,出现:Cannot specify include directories for imported target “freeimage::FreeImage”。但是,实际上freeimage已经安装好了。(如果没有安装,就sudo apt-get install libfreeimage3 libfreeimage-dev

定位:在git clone下得colmap/cmake/FindFreeImage.cmake文件中,第96-98行:

	target_include_directories(freeimage::FreeImage INTERFACE ${FREEIMAGE_INCLUDE_DIRS})target_link_libraries(freeimage::FreeImage INTERFACE ${FREEIMAGE_LIBRARIES})

可能原因:cmake版本在3.11之前,target_include_directories命令有一些问题,需要升级cmake版本。通过cmake -version命令查看当前版本。

升级cmake:不要使用apt update cmake的方法,会导致异常。建议在自己的目录下安装新的cmake包,作为优先的cmake路径。

# 下载cmake源码包
wget https://github.com/Kitware/CMake/releases/download/v3.21.4/cmake-3.21.4-linux-x86_64.tar.gz
# 解压
tar -xzvf cmake-3.21.4-linux-x86_64.tar.gz

将下载的cmake-3.21.4文件夹下的/bin加入PATH中,并且放到以前的PATH之前。Linux搜索cmake可执行文件的时候会沿着PATH的路径挨个寻找,如果先遇到cmake-3.21.3/bin路径下的cmake,就会直接使用cmake-3.21,相当于升级了cmake。

cd cmake-3.21.4-linux-x86_64/bin # 得到cmake-3.21的路径
pwd # 查看当前路径,我的路径是/data/zwn21/software/cmake/cmake-3.21.4-linux-x86_64/bin
export PATH=/data/zwn21/software/cmake/cmake-3.21.4-linux-x86_64/bin:$PATH
# 临时的方法,如果有必要就把这句话放到.bashrc文件中。
# where cmake的输出,看到自己的cmake目录排在前面,证明使用了新版本cmake
/data/zwn21/software/cmake/cmake-3.21.4-linux-x86_64/bin/cmake
/usr/bin/cmake# cmake -version的输出,确实是新版本了。
cmake version 3.21.4CMake suite maintained and supported by Kitware (kitware.com/cmake).

本问题的参考:

  • [1] https://colmap.github.io/install.html;
  • [2] cmake升级、更新(ubuntu18.04);
  • [3] cmake:Cannot specify include directories for imported target。

问题3、could not find ZL4

问题:

CMake Error at cmake/FindLZ4.cmake:91 (message):Could not find LZ4
Call Stack (most recent call first):cmake/FindDependencies.cmake:18 (find_package)CMakeLists.txt:86 (include)

原因:可能还没有安装zl4,也可能是没在路径中,找不到这个库。

解决方案:装上它,sudo apt -y install liblz4-dev

参考:

  • [1] How to fix build ‘lz4 library not found, compiling without it’

问题4、Unable to locate package nvidia-cuda-toolkit-gcc

问题:在按照colmap教程安装cuda依赖的过程中,出现Unable to locate package nvidia-cuda-toolkit-gcc的问题。

# 命令
sudo apt-get install -y \nvidia-cuda-toolkit \nvidia-cuda-toolkit-gcc
# 输出
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package nvidia-cuda-toolkit-gcc

解决方案:未必是自己没安装好,只是自己的路径不够完整。

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

参考:

  • [1]【CUDA】apt install nvidia-cuda-toolkit;Please ask your administrator.

问题5、需要设置CMAKE_CUDA_ARCHITECTURES

问题:在cmake .. -GNinja的过程中,需要

CMake Error at cmake/FindDependencies.cmake:125 (message):You must set CMAKE_CUDA_ARCHITECTURES to e.g.  'native', 'all-major', '70',etc.  More information athttps://cmake.org/cmake/help/latest/prop_tgt/CUDA_ARCHITECTURES.html
Call Stack (most recent call first):CMakeLists.txt:86 (include)

解决方案:查看自己显卡的版本号,并按照版本号添加CMAKE_CUDA_ARCHITECTURES的数值。
版本号参见该链接:You must set CMAKE_CUDA_ARCHITECTURES to e.g. ‘native’, ‘all-major’, ‘70’

我是20系的显卡,最后执行命令:
cmake .. -GNinja -DCMAKE_CUDA_ARCHITECTURES='75'
参考:

  • [1] You must set CMAKE_CUDA_ARCHITECTURES to e.g. ‘native’, ‘all-major’, ‘70’

我没有别的问题了,最后记得请师兄和帮忙的朋友吃好吃的。

这篇关于COLMAP安装问题汇总的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/163604

相关文章

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

Redis出现中文乱码的问题及解决

《Redis出现中文乱码的问题及解决》:本文主要介绍Redis出现中文乱码的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 问题的产生2China编程. 问题的解决redihttp://www.chinasem.cns数据进制问题的解决中文乱码问题解决总结

全面解析MySQL索引长度限制问题与解决方案

《全面解析MySQL索引长度限制问题与解决方案》MySQL对索引长度设限是为了保持高效的数据检索性能,这个限制不是MySQL的缺陷,而是数据库设计中的权衡结果,下面我们就来看看如何解决这一问题吧... 目录引言:为什么会有索引键长度问题?一、问题根源深度解析mysql索引长度限制原理实际场景示例二、五大解决

Springboot如何正确使用AOP问题

《Springboot如何正确使用AOP问题》:本文主要介绍Springboot如何正确使用AOP问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录​一、AOP概念二、切点表达式​execution表达式案例三、AOP通知四、springboot中使用AOP导出

Python中Tensorflow无法调用GPU问题的解决方法

《Python中Tensorflow无法调用GPU问题的解决方法》文章详解如何解决TensorFlow在Windows无法识别GPU的问题,需降级至2.10版本,安装匹配CUDA11.2和cuDNN... 当用以下代码查看GPU数量时,gpuspython返回的是一个空列表,说明tensorflow没有找到

解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题

《解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题》:本文主要介绍解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4... 目录未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘打开pom.XM

IDEA Maven提示:未解析的依赖项的问题及解决

《IDEAMaven提示:未解析的依赖项的问题及解决》:本文主要介绍IDEAMaven提示:未解析的依赖项的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录IDEA Maven提示:未解析的依编程赖项例如总结IDEA Maven提示:未解析的依赖项例如

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文