当前位置: 首页 > article >正文

在Ubuntu 22.04上编译COLMAP 3.8,我踩过的那些坑(含Anaconda环境冲突、CUDA版本、GUI缺失等完整解决方案)

在Ubuntu 22.04上编译COLMAP 3.8从环境冲突到完美运行的实战指南当三维重建领域的专业工具COLMAP遇上最新的Ubuntu LTS版本本该是科研工作的完美开端但实际编译过程却像一场充满陷阱的冒险。本文将带你穿越Anaconda环境冲突、CUDA版本迷局、GUI缺失等十大典型陷阱最终在Ubuntu 22.04上成功部署COLMAP 3.8。不同于普通的安装教程这里记录的每个解决方案都经过实战验证特别适合需要在无头服务器或特定环境下部署的研究人员。1. 环境准备避开第一个深坑在Ubuntu 22.04上编译COLMAP前系统环境的纯净度直接决定后续成功率。我们首先需要处理Python环境与系统库的冲突问题。关键依赖清单sudo apt-get install \ git cmake ninja-build build-essential \ libboost-program-options-dev libboost-filesystem-dev \ libboost-graph-dev libboost-system-dev libboost-test-dev \ libeigen3-dev libflann-dev libsqlite3-dev \ libfreeimage-dev libmetis-dev libgoogle-glog-dev \ libgflags-dev libsuitesparse-dev libceres-dev \ qtbase5-dev libqt5opengl5-dev注意如果系统已安装Anaconda编译前务必执行conda deactivate export PATH/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin这个简单的环境隔离操作可以避免80%的库冲突问题。有用户反馈即使退出conda环境Anaconda的库路径仍可能导致libmpfr.so.6和libgmp.so.10等基础库冲突。此时需要临时移动Anaconda的相关库文件mkdir ~/anaconda_lib_backup mv $ANACONDA_HOME/lib/libmpfr* ~/anaconda_lib_backup/ mv $ANACONDA_HOME/lib/libgmp* ~/anaconda_lib_backup/2. CUDA配置版本兼容性实战COLMAP 3.8对CUDA版本有严格要求官方推荐CUDA 11.x系列。在Ubuntu 22.04上默认安装的CUDA 12.x会导致编译失败。验证CUDA版本nvcc --version若显示版本高于11.x需降级处理卸载现有CUDAsudo apt-get purge ^cuda-.*安装CUDA 11.4wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600 sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub sudo add-apt-repository deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ / sudo apt-get update sudo apt-get install -y cuda-11-4设置环境变量echo export PATH/usr/local/cuda-11.4/bin:$PATH ~/.bashrc echo export LD_LIBRARY_PATH/usr/local/cuda-11.4/lib64:$LD_LIBRARY_PATH ~/.bashrc source ~/.bashrc遇到nvcc fatal: Unsupported gpu architecture compute_35错误时需在CMake时指定计算能力cmake .. -DCUDA_ARCHSnative3. 源码编译关键参数解析从GitHub获取COLMAP源码时建议使用3.8版本而非最新main分支git clone --branch 3.8 https://github.com/colmap/colmap.git cd colmap mkdir build cd build关键CMake参数参数推荐值作用说明GUI_ENABLEDON启用图形界面无头服务器设为OFFCUDA_ENABLEDON启用CUDA加速CMAKE_CUDA_ARCHITECTURESnative自动检测GPU架构CMAKE_CXX_STANDARD14指定C标准版本完整编译命令cmake .. -DCMAKE_BUILD_TYPERelease \ -DCUDA_ENABLEDON \ -DCUDA_ARCHSnative \ -DCMAKE_CXX_STANDARD14 \ -DGUI_ENABLEDON make -j$(nproc) sudo make install4. 典型错误与解决方案4.1 Anaconda与系统库冲突症状runtime library [libmpfr.so.6] in /usr/lib/x86_64-linux-gnu may be hidden by files in: /anaconda/lib解决方案# 临时屏蔽Anaconda库 export LD_LIBRARY_PATH/usr/local/cuda/lib64:/usr/lib/x86_64-linux-gnu4.2 CERES版本问题症状LocalParameterization is not a member of ceres需安装CERES 2.0.0git clone https://ceres-solver.googlesource.com/ceres-solver cd ceres-solver git checkout 2.0.0 mkdir build cd build cmake .. -DBUILD_TESTINGOFF -DBUILD_EXAMPLESOFF make -j$(nproc) sudo make install4.3 OpenGL相关错误症状QOpenGLWidget: Failed to create context确保已安装正确驱动sudo ubuntu-drivers autoinstall sudo apt install mesa-common-dev libglu1-mesa-dev5. 无头服务器特别配置对于没有显示设备的服务器需要虚拟显示支持安装Xvfbsudo apt install xvfb启动虚拟显示Xvfb :1 -screen 0 1024x768x24 export DISPLAY:1编译时关闭GUIcmake .. -DGUI_ENABLEDOFF虽然关闭GUI可以编译通过但会丧失SIFT GPU加速功能。更优方案是保持GUI_ENABLEDON通过X11转发使用远程GUIssh -X userserver colmap gui6. 验证安装与性能调优成功编译后验证各模块功能colmap -h colmap gui # 验证GUI功能 colmap feature_extractor --help # 验证CUDA加速性能优化参数 在~/.colmap/config.ini中添加[feature_extraction] use_gpu 1 gpu_index 0 [sift] max_image_size 4000对于多GPU环境可通过环境变量指定设备export CUDA_VISIBLE_DEVICES0,17. 容器化部署方案为避免环境冲突推荐使用Docker部署FROM nvidia/cuda:11.4.2-devel-ubuntu22.04 RUN apt-get update apt-get install -y \ git cmake ninja-build build-essential \ libboost-dev libeigen3-dev libfreeimage-dev \ qtbase5-dev libqt5opengl5-dev \ rm -rf /var/lib/apt/lists/* RUN git clone --branch 3.8 https://github.com/colmap/colmap.git \ mkdir colmap/build cd colmap/build \ cmake .. -DCMAKE_BUILD_TYPERelease \ make -j$(nproc) make install构建并运行docker build -t colmap:3.8 . docker run --gpus all -it colmap:3.8 colmap -h8. 实际项目应用技巧在三维重建项目中合理设置工作流程可提升效率项目目录结构project/ ├── images/ # 原始图像 ├── database.db # 特征数据库 ├── sparse/ # 稀疏重建结果 └── dense/ # 稠密重建结果批处理脚本示例#!/bin/bash # 特征提取 colmap feature_extractor \ --database_path $PROJECT/database.db \ --image_path $PROJECT/images \ --ImageReader.single_camera 1 # 特征匹配 colmap exhaustive_matcher \ --database_path $PROJECT/database.db # 稀疏重建 mkdir -p $PROJECT/sparse colmap mapper \ --database_path $PROJECT/database.db \ --image_path $PROJECT/images \ --output_path $PROJECT/sparse # 稠密重建 mkdir -p $PROJECT/dense colmap image_undistorter \ --image_path $PROJECT/images \ --input_path $PROJECT/sparse/0 \ --output_path $PROJECT/dense \ --output_type COLMAP colmap patch_match_stereo \ --workspace_path $PROJECT/dense colmap stereo_fusion \ --workspace_path $PROJECT/dense \ --output_path $PROJECT/dense/fused.ply质量检查命令# 检查重建点数 colmap model_analyzer --path $PROJECT/sparse/0 # 可视化检查 colmap model_converter \ --input_path $PROJECT/sparse/0 \ --output_path $PROJECT/sparse/0.ply \ --output_type PLY

相关文章:

在Ubuntu 22.04上编译COLMAP 3.8,我踩过的那些坑(含Anaconda环境冲突、CUDA版本、GUI缺失等完整解决方案)

在Ubuntu 22.04上编译COLMAP 3.8:从环境冲突到完美运行的实战指南当三维重建领域的专业工具COLMAP遇上最新的Ubuntu LTS版本,本该是科研工作的完美开端,但实际编译过程却像一场充满陷阱的冒险。本文将带你穿越Anaconda环境冲突、CUDA版本迷局…...

LBM强迫场设置实战:如何模拟一个东亚冬季风冷源并可视化其三维结构

LBM强迫场设置实战:如何模拟一个东亚冬季风冷源并可视化其三维结构当我们需要研究特定气候现象对大气环流的影响时,线性斜压模式(LBM)提供了一个理想的数值实验平台。本文将聚焦于如何通过精确配置LBM的强迫场参数,模拟…...

瑞德克斯在不同终端的使用体验如何?语言覆盖广不广?

瑞德克斯在不同终端的使用体验如何?语言覆盖广不广?面向全球客户的金融服务平台,多语言能力是基础项。瑞德克斯支持多种主流语言,让客户在自己熟悉的语言环境中完成所有操作,这种细节让平台显得格外友好。瑞德克斯的多…...

别装Matlab了!用这个免费网站Desmos,5分钟搞定函数绘图和矩阵计算

告别笨重软件:用Desmos在线工具5分钟完成专业级数学计算数学计算和可视化是科研、工程和教学中不可或缺的环节。传统解决方案如Matlab、Mathematica虽然功能强大,但存在价格昂贵、安装包庞大、启动缓慢等问题。对于需要快速验证数学问题的用户来说&#…...

MCU上的深度学习流量分类:HW-NAS优化与部署实践

1. 微控制器上的深度学习流量分类挑战在物联网设备爆炸式增长的时代,网络流量分类(Traffic Classification)已成为保障通信安全和优化网络性能的关键技术。传统基于端口号或深度包检测(DPI)的方法面对加密流量时束手无…...

揭秘古老算法与现代插桩:手把手用‘更相减损术’理解程序插桩技术

揭秘古老算法与现代插桩:手把手用‘更相减损术’理解程序插桩技术 当《九章算术》中的"更相减损术"遇上现代程序插桩技术,会碰撞出怎样的火花?这不仅是技术穿越千年的对话,更是一场理解代码行为的绝佳实践。本文将带你从…...

艾多美非传销远离“一夜暴富”,拥抱“细水长流”

在商业模式的讨论中,艾多美常被误读为传销,这种误解源于对“成功路径”的不同想象。传销往往以“一夜暴富”的虚幻承诺吸引参与者,描绘出一条“拉人头、赚快钱”的捷径;而艾多美倡导的是截然不同的价值观——通过日复一日的产品使…...

告别虚拟机!在WSL2上搞定Mujoco物理引擎(保姆级避坑指南)

在WSL2中高效部署Mujoco物理引擎的完整实践指南当机器人学和强化学习开发者需要在Windows环境下进行高效开发时,WSL2已成为替代传统虚拟机和双系统方案的理想选择。然而,在WSL2中配置Mujoco物理引擎时,图形界面显示、依赖库安装和许可证配置等…...

CentOS 7服务器管理员的福音:手把手配置fbterm终端,实现中英文无缝切换

CentOS 7终端双语解决方案:fbterm配置全指南与实战技巧对于长期工作在命令行界面的系统管理员来说,中英文环境切换是个高频痛点。英文系统能确保软件兼容性和命令执行稳定性,但面对中文日志、文档时又需要可靠的显示支持。这种矛盾在CentOS 7…...

小学期week2记录

本周完成了发射端电路的pcb原理图绘制,还有很多不足,下周将完善pcb的布线并完成接收端电路的设计...

AArch64断点异常机制与调试实践详解

1. AArch64断点异常机制概述断点异常是处理器调试功能的核心机制,它允许开发者在特定条件下暂停程序执行,进入调试状态。在AArch64架构中,断点异常通过DBGBCR_EL1(调试断点控制寄存器)和DBGBVR_EL1(调试断点…...

聚焦“纪律高危型”学生的考勤画像深度分析

1. 实验概述1.1 实验目的本实验是在完成学生考勤群体聚类(已分出模范型、波动型、高危型)的基础上,专门针对“纪律高危型” 学生群体进行一次深度的、多维度的数据画像分析。旨在通过可视化手段,从性别、年级、校区、班级等多个角…...

WSL2终端颜值与效率双飞:保姆级oh-my-zsh配置指南(含autojump、语法高亮插件)

WSL2终端颜值与效率双飞:保姆级oh-my-zsh配置指南(含autojump、语法高亮插件)在开发者的日常工作中,终端是使用频率最高的工具之一。一个高效、美观的终端环境不仅能提升工作效率,还能让枯燥的命令行操作变得愉悦。对于…...

UE Mobility

UE4传统光照模式最求极致性能:静态光源 静态物体;平衡画质与性能:固定光源 静态物体(经典组合,如太阳);完全动态场景:可移动光源 Lumen;静态光源静态物体:…...

李白的思乡诗 / 山水诗 / 豪放诗有哪些?诗词在线app手工整理

"酒入豪肠,七分酿成了月光,余下的三分啸成剑气,绣口一吐就半个盛唐。" 李白的诗,是盛唐最耀眼的星,既有 "天生我材必有用" 的豪放,也有 "低头思故乡" 的柔情,更有…...

ThinkPad X1 Carbon摄像头罢工?别急着重装驱动,先试试这个Windows更新‘暂停大法’

ThinkPad X1 Carbon摄像头故障的终极解决方案:Windows更新机制深度解析ThinkPad X1 Carbon作为商务笔记本的标杆产品,其稳定性向来备受赞誉。但最近不少用户反馈遇到了一个令人抓狂的问题——摄像头突然罢工。更令人沮丧的是,按照常规思路重装…...

保姆级教程:手把手教你用NVIDIA Surround搞定Prepar3D多屏显示(Win10/Win11通用)

沉浸式飞行体验:NVIDIA Surround多屏配置全攻略 飞行模拟爱好者追求的不仅是操作的真实感,更是视觉上的沉浸体验。当你在驾驶舱内环顾四周,透过虚拟舷窗看到连贯的地平线时,那种身临其境的感觉是单屏无法比拟的。本文将带你从零开…...

微软Fara1.5:开源浏览器智能体全面超越OpenAI和Google,27B小模型如何做到的?

摘要: 2026年5月22日,微软研究院AI Frontiers实验室发布Fara1.5系列浏览器智能体,在两项主流基准测试中击败OpenAI Operator和Google Gemini 2.5 Computer Use。值得关注的是,这是一款完全开源的模型,权重开放、推理代…...

【脑机接口】迁移学习 域自适应 自监督 EEG 大模型术语解释(第9弹)

266.迁移学习 TL:迁移学习是把一个场景中学到的知识迁移到另一个相关场景中的方法。在 EEG 中,源域通常是已有被试、已有会话或已有数据集,目标域通常是新被试、新会话或小样本数据。它的核心目的,是减少目标被试需要采集的校准数…...

企业级Gemini投资回报率坍塌预警:5个高危信号+2个紧急干预阈值,今日不查,下季度预算或被砍30%

更多请点击: https://kaifayun.com 第一章:Gemini生命周期价值分析 Gemini 模型作为 Google 推出的多模态大语言模型系列,其生命周期价值不仅体现在推理性能与响应速度上,更贯穿于训练、部署、监控、迭代与退役全过程。理解这一全…...

Leetcode 剑指 Offer II 172. 统计目标成绩的出现次数

题目难度: 简单 原题链接 今天继续更新 Leetcode 的剑指 Offer(专项突击版)系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 某班级考试成绩按非严格递增顺序记录于整数数组 scores&#xff…...

长沙装修设计供应商

在长沙,装修设计是很多人关心的话题。无论是家装、别墅还是商业空间,选择一个合适的设计供应商至关重要。今天,就为大家推荐一家值得信赖的装修设计供应商——长沙互知空间设计工作室,即长沙互知建筑设计有限公司。下面从几个方面…...

用Python手把手复现GRO淘金优化算法(附完整代码与CEC2005测试)

用Python手把手复现GRO淘金优化算法(附完整代码与CEC2005测试)当算法工程师第一次接触GRO淘金优化算法时,往往会被其独特的生物启发式设计所吸引。这种模拟19世纪淘金者行为的元启发式算法,在解决复杂优化问题时展现出令人惊讶的效…...

esp开发与应用(1602液晶显示屏)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】模块当中,有的是比较简单的,比如说蜂鸣器,尤其是有源蜂鸣器。大家可以把它想象成是一个gpio输出的喇叭&#xff…...

饲料颗粒机生产厂家

行业痛点分析:一场关于“磨损”与“成本”的持久战在饲料加工领域,颗粒机设备的稳定性与耐用性,直接决定了生产线的整体效率与运营成本。然而,长期困扰行业的核心痛点之一,是磨盘与压辊的耐磨性问题。根据行业调研数据…...

各个AI公司都在玩的Harness 架构:Harness架构深度解析

Harness 架构深度解析为什么 AI 智能体的未来不是框架,而是「运行壳」TL;DR 三分钟看懂这篇文章•当 Claude Code、Cursor、Codex、Windsurf 四款产品独立演化出几乎相同的内部架构时,一种叫做 Harness(运行壳)的新形态浮出水面。…...

基于 FreeRTOS + ESP8266(AT 指令)+ MQTT的实现方案

一、整体系统架构 ┌─────────────────────────────────────────────┐ │ Host MCU (dsPIC33 / STM32) │ │ │ │ ┌────────────┐ UART ┌…...

西安家谱印刷厂哪家好

你知道吗?我走访了全国20多个宗亲会,发现一个扎心的事实——超过70%的家庭在第一次修谱时,都踩过同样的坑。有位陕西的陈姓宗长,花了整整3年时间收集家族资料,结果找了一家小印刷厂,拿到手的家谱&#xff0…...

MySQL InnoDB引擎八大核心特性详解(高频面试题)

📚 专栏:MySQL底层原理&面试必刷💡 适用人群:后端开发、数据库学习者、面试刷题者🔥 博客简介:InnoDB是MySQL 5.5默认存储引擎,也是企业项目唯一主流引擎。本文通俗易懂图文拆解其核心特性&…...

第一次的博客

我是???计划考研由于是跨考,计划从0开始,先打c语言基础,再学习数据结构每天二~三小时暂无...