Ubuntu下COLMAP的编译与安装全攻略

文章目录

  • 一、前言
  • 二、安装依赖库
    • 基本的依赖安装
    • Ceres Solver安装
      • 不需要cuda支持
      • 需要cuda支持
  • 三、编译colmap
  • 四、运行colmap
  • 五、总结


一、前言

在计算机视觉领域,colmap是一款功能强大的开源图像重建工具。它提供了包括SfM(Structure from Motion)、MVS(Multi-View Stereo)等在内的多种功能,广泛应用于三维建模、场景理解等领域。对于从事相关研究的人员来说,掌握colmap的使用方法是非常有必要的。本文将详细介绍如何在Ubuntu系统下安装和使用colmap,帮助读者快速入门并开始进行实际操作。


二、安装依赖库

colmap的编译和运行需要一些依赖库。特别常见的我就不介绍了。具体都是我在编译过程中报错一个个解决的,多数可以通过sudo apt-get install来解决,Ceres Solver则需要源码编译。如果在编译过程中遇到其它的库报错,根据提示安装即可。
以下是安装这些依赖库的具体步骤:

基本的依赖安装

# 更新软件包列表
sudo apt-get update
# FLANN 是一个用于高效近似最近邻搜索的库
sudo apt-get install libflann-dev 
# LZ4 是一个非常快速的压缩算法
sudo apt-get install liblz4-dev  
# SQLite3 是一个轻量级的数据库引擎
sudo apt-get install libsqlite3-dev
# CGAL 是一个用于计算几何的 C++ 库
sudo apt-get install libcgal-dev
# METIS 是一个专注于图形和网格划分的软件包
sudo apt-get install libmetis-dev
# FreeImage 是一个开源的图像处理库
sudo apt-get install libfreeimage-dev
# GLEW 提供了跨平台的接口,用于加载和管理 OpenGL 的扩展功能
sudo apt-get install libglew-dev

Ceres Solver安装

不需要cuda支持

如果不需要cuda支持,安装方法相对传统,克隆 Ceres Solver 的源代码,在克隆的仓库目录中,使用 CMake 构建项目并安装。在 CMake 配置步骤中,可以通过设置 -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF -DCUDA_USE_STATIC_CUDA_RUNTIME=OFF 等选项来禁用 CUDA。这个我没具体尝试,应该是可以。因为我还是需要cuda支持的。

git clone https://github.com/ceres-solver/ceres-solver.git
cd ceres-solver
mkdir build
cd build
# 禁用cuda
cmake -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF -DCUDA_USE_STATIC_CUDA_RUNTIME=OFF ..
make -j$(nproc)
sudo make install

需要cuda支持

这个由于显卡的不同,需要下载合适的版本,我是试出来的2.0.0版在我的电脑上是ok的。最新版的在编译 Ceres Solver 时遇到了一个关于 operator<< 的重载冲突,具体是在尝试将 nullptr 输出到 std::ostream 对象时发生的。所以需要旧一点的版本。降为2.0.0后,编译非常顺利。

wget https://codeload.github.com/ceres-solver/ceres-solver/tar.gz/refs/tags/2.0.0
tar -zxvf ceres-solver-2.0.0.tar.gz  
cd ceres-solver-2.0.0/
mkdir build 
cd build
cmake .. 
make -j$(nproc)
sudo make install

三、编译colmap

  1. 下载和配置COLMAP源代码
git clone https://github.com/colmap/colmap.git
  1. 编译安装

注意在编译的时候需要指定gpu的架构。可以通过运行nvidia-smi命令在终端中查找 GPU 型号,然后在网上查找对应的cuda架构。

cd colmap
mkdir build
cd build
# 指定gpu的架构,这个61是我显卡的架构,具体需要根据自己的显卡来确定。
cmake -DCMAKE_CUDA_ARCHITECTURES=61 ..
make -j$(nproc)
sudo make install

四、运行colmap

安装完成后,可以通过命令行启动 COLMAP:

colmap gui

这将打开 COLMAP 的图形用户界面。


五、总结

本文不仅介绍了如何在Ubuntu系统中安装COLMAP,还介绍了在安装过程中可能遇到的问题以及相应的解决方案。希望这些知识能够帮助读者在后续的研究工作中更加顺利地使用COLMAP。无论是在三维建模还是场景理解的工作中,COLMAP都将成为一个得力的助手。如果在使用过程中遇到任何问题,不要忘记查阅COLMAP的官方文档和社区资源,那里通常能找到解决方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/225021.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git变更关联的远程仓库

git变更关联的远程仓库 git 将本地关联的远程仓库1变更为新建的远程仓库2 1、移除本地的远程仓库关联关系 git remote remove origin 2、添加新的远程仓库地址&#xff1a; git remote add origin gitgithub.com:github-xiaobai/66-test-cc.git 3、生成本机的ssh-key(如果已…

uniapp获取app版本号、h5版本号、微信小程序版本号的方法

目录 第一种获取App版本号App版本号App的H5版本号 第二种获取App版本号第三种获取App版本号第一种获取微信小程序版本号获取微信小程序版本号 最后 第一种获取App版本号 App版本号 // 获取当前app的版本 const systemInfo uni.getSystemInfoSync(); // 应用程序版本号 // 条…

万户 OA OfficeServer.jsp 任意文件上传漏洞复现

0x01 产品简介 万户OA是面向政府组织及企事业单位的FlexOffice自主安全协同办公平台。 0x02 漏洞概述 万户OA OfficeServer.jsp接口存在任意文件上传漏洞,攻击者可通过该漏洞上传任意文件从而控制整个服务器。 0x03 复现环境 FOFA: (banner="OASESSIONID" &a…

算法基础概念之数据结构

邻接表 每个点作为头节点接一条链表 链表中元素均为该头节点指向的点 优先队列 参数: ①储存元素类型 ②底层使用的存储结构(一般为vector) ③比较方式(默认小于)

ffmpeg可以做什么

用途 FFmpeg是一个功能强大的多媒体处理工具&#xff0c;可以处理音频和视频文件。它是一个开源项目&#xff0c;可在各种操作系统上运行&#xff0c;包括Linux、Windows和Mac OS X等。以下是FFmpeg可以做的一些主要任务&#xff1a; 转换媒体格式&#xff1a;可将一个媒体格式…

0基础学习VR全景平台篇第128篇:720VR全景拍摄设备推荐

上课&#xff01;全体起立~ 大家好&#xff0c;欢迎观看蛙色官方系列全景摄影课程&#xff01; 本篇教程&#xff0c;小编为大家推荐720VR全景拍摄所需要的设备器材。上节我们提到&#xff0c;理论上任意相机和镜头都能够拍摄全景&#xff0c;但为了标准化制作流程&#xff0…

关于chatgpt一点肤浅认识

001 词向量 用数字向量表示单词。它是计算机更好地理解单词 1、预训练 – 就是先训练一个模型&#xff0c;用于以后特定任务的微调&#xff0c;比如将 BERT这个模型用于特定的NLP任务&#xff0c;比如情感分析 2、one-hot: 用只有一个元素是1&#xff0c;其他是0的向量表示物体…

【C++】特殊类设计及单例模式

1.设计一个只能在堆上创建对象的类 实现方式&#xff1a; 将类的构造函数私有&#xff0c;拷贝构造声明成私有。防止别人调用拷贝在栈上生成对象。提供一个静态的成员函数&#xff0c;在该静态成员函数中完成堆对象的创建。代码示例如下&#xff1a; class HeapOnly { publi…

CSS新手入门笔记整理:CSS常用属性表

字体样式 属性 属性值 说明 font-family 微软雅黑/苹方 字体类型 font-size 数值 字体大小 font-weight 数值/关键字 字体粗细&#xff08;字重&#xff09; font-style normal&#xff08;正常(默认值)&#xff09;italic&#xff08;斜体&#xff09;oblique&am…

Graylog解决超出ES搜索最大窗口限制问题

今天在查询日志的时候graylog报了一个错&#xff1a; While retrieving data for this widget, the following error(s) occurred: Unable to perform search query: Elasticsearch exception [typeillegal_argument_exception, reasonResult window is too large, from size …

云原生向量计算引擎 PieCloudVector:为大模型提供独特记忆

拓数派大模型数据计算系统&#xff08;PieDataComputingSystem&#xff0c;缩写&#xff1a;πDataCS&#xff09;在10月24日程序员节「大模型数据计算系统」2023拓数派年度技术论坛正式发布。πDataCS 以云原生技术重构数据存储和计算&#xff0c;「一份存储&#xff0c;多引擎…

我的NPI项目之Android 安全系列 -- 先认识一下ST33Jxxx

目前接触过的高通平台都没有集成单独的SE&#xff0c;安全运行环境都是高通自家的TEE&#xff0c;又言Trustzone。高通Keystore功能也是依赖TEE来实现的。那么&#xff0c;如果另外集成SE&#xff0c;那么高通的Keystore如何集成&#xff1f;TEE部分要如何配置&#xff1f; 最近…

Ubuntu Shutdown while other user logged on

1. sudo vim /etc/systemd/logind.conf 修改代码KillUserProcessesyes 2. sudo touch /etc/polkit-1/localauthority/50-local.d/multi-user-inhibit-shutdown-restart.pkla 3. 打开修改配置文件 sudo vim /etc/polkit-1/localauthority/50-local.d/multi-user-inhibit-shut…

TrustZone之总线请求

接下来&#xff0c;我们将查看系统中的总线请求者&#xff0c;如下图所示&#xff1a; 系统中的A型处理器具有TrustZone感知&#xff0c;并在每个总线访问中发送正确的安全状态。然而&#xff0c;大多数现代SoC还包含非处理器总线请求者&#xff0c;例如GPU和DMA控制器。 与完成…

MC-30A (32.768 kHz用于汽车应用的晶体单元)

MC-30A 32.768 kHz用于汽车应用的晶体&#xff0c;车规晶振中的热销型号之一。该款石英晶体谐振器&#xff0c;可以在-40 to 85 C的温度内稳定工作&#xff0c;能满足起动振动的要求。同时满足AEC-Q200无源元件质量标准认证&#xff0c;满足汽车仪表系统的所有要求。 频率范围…

蓝桥杯专题-真题版含答案-【基因牛的繁殖】【黄金分割数】【振兴中华】【圆周率与级数】

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

特斯拉第二代机器人:市场期待与看解

随着特斯拉在人工智能领域的不断突破&#xff0c;其研发的第二代机器人即将面世。这款机器人集结了特斯拉在机器人技术、人工智能和自动驾驶等方面的最新成果&#xff0c;引发了市场和业界的广泛关注。本文将探讨市场对特斯拉第二代机器人的期待与看法。 一、期待&#xff1a;…

Apache Flume(4):日志文件监控

1 案例说明 企业中应用程序部署后会将日志写入到文件中&#xff0c;可以使用Flume从各个日志文件将日志收集到日志中心以便于查找和分析。 2 使用Exec Soucre Exec Source Exec Source通过指定命令监控文件的变化&#xff0c;加粗属性为必须设置的。 属性名默认值说明chan…

ida脚本环境开发配置idapythonidacpp三端环境(win,mac,linux)

ida脚本也有一段时间了,一直有个痛点是找不到比较好的方法热重载脚本来实时改动生效,导致开发效率老慢了。固总结下比较友好的环境搭配 使用ida热加载插件让你开发脚本更高效 github地址: GitHub - 0xeb/ida-qscripts: An IDA plugin to increase productivity when developi…

什么是PHP中的命名空间冲突?

在PHP中&#xff0c;命名空间冲突指的是在程序中存在两个或多个命名空间&#xff08;namespace&#xff09;下的类、函数、常量等标识符具有相同的名称&#xff0c;从而导致命名空间冲突的情况。这可能会引发以下问题&#xff1a; 类名、函数名或常量名的冲突&#xff1a; 如果…