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

ubuntu20.0.4源码安装Colmap流程

系统环境

ubuntu20.0.4,已经预装了cuda toolkit,cuda版本11.8

动机

通过apt install的已编译的版本方式也可以成功安装,但是不支持GPU加速。导致特征点匹配的速度非常慢。在本地机器测试,960*540分辨率上的特征点匹配需要3s钟。使用GPU加速可以减少1到2个数量级。

Colmap用到的SiftGPU,SIFTGPU通过图形硬件管线实现特征提取的并行加速

安装流程:

主要参考官方文档的流程:

https://colmap.github.io/install.html#build-from-source,just

从git上pull下来的Colmap版本是3.13.0,是比较新的代码。

按照官方文档,需要安装依赖软件

Dependencies from the default Ubuntu repositories:

比较顺利,完成安装。

执行cmake命令,报错:

原因:

Ubuntu20.0.4,Apt install cmake的版本是3.16。

然而Colmap的cmake/FindDependencies.cmake:147要求cmake的版本3.17以上。

提升cmake的版本,参考https://www.cnblogs.com/Maker-Liu/p/16550381.html,通过源码安装。

Cmake 3.22安装成功,比较顺利

执行cmake,没有报错:

执行ninja报错

原因:

这个错误是 类型不匹配 导致的:point3D.xyz.data() 返回 const double*(常量指针),但 Ceres Solver 的 IsParameterBlockConstant 函数要求输入 double*(非 const 指针),C++ 不允许直接将 const 指针转换为非 const 指针。

核心原因:

Colmap 代码与你系统中安装的 Ceres Solver 版本不兼容—— 旧版本 Ceres 的 IsParameterBlockConstant 函数参数为非 const 指针,而 Colmap 新版本代码中 point3D.xyz 是 const 类型,导致类型冲突。

Apt install的Ceres是1.14.0,存在接口参数类型问题。在最新的代码中修复了这个问题。

修改办法,不想重新编译Ceres,修改了bundle_adjustment.cc中的代码,总共4处

if (problem.IsParameterBlockConstant(const_cast<double*>(point3D.xyz.data())) &&

继续ninja编译,仍然存在问题:

解决办法:

参考https://blog.csdn.net/qq_30565883/article/details/133778529

编译成功

http://www.dtcms.com/a/578241.html

相关文章:

  • 做网站卖东西送上门网站title的写法
  • Windows 系统安装 Composer 详细教程
  • wordpress 切换域名网站代码优化有哪些
  • 中小工厂erp管理系统济南网站建设seo优化
  • 国产ASP4644I6B降压稳压器在工业仪表中的应用实践与分析
  • TRO侵权预警|Theodoros爆款食物插画发起版权维权
  • 4.1 Boost库工具类noncopyable的使用
  • ubuntu连接airpods
  • wordpress评分点评成都网站搭建优化推广
  • 保山手机网站建设影视公司网站建设
  • Poll 服务器实战教学:从 Select 迁移到更高效的多路复用
  • 代码管理——VS Code|Git
  • SkyWalking运维之路(Java探针接入)
  • 四川省建设厅注册中心网站wordpress主页加音乐
  • 广州企业网站模板建站专业做阿里巴巴网站的公司
  • 网站的ftp账号和密码谷歌外贸建站
  • 全球生物识别加密U盘市场:安全需求驱动增长,技术迭代重塑格局
  • 从 ChatGPT 到 OpenEvidence:AI 医疗的正确打开方式
  • 彩票网站自己可以做吗网站广告设计
  • 面试后查缺补漏--cmake,makefiles,g++,gcc(AI写)
  • C++入门(三) (算法竞赛)
  • 遵义市网站建设网络营销产品推广
  • Docker-仓库-镜像制作
  • 网站增值业务一手项目对接app平台
  • easyExcel单元格动态合并示例
  • 《嵌入式驱动(十一):I2C子系统架构》
  • Android 多版本Toast版本区别以及使用可能遇到的问题
  • 集团高端网站建设公司wordpress侧边栏文件
  • 【Java面向对象编程入门:接口、继承与多态】
  • 百度联盟的网站怎么做企业网站的设计要求有哪些