WIN11+CUDA11.8+VS2019配置BundleFusion

news2025/6/3 8:43:42

参考:

BundleFusion:VS2019 2017 ,CUDA11.5,win11,Realsense D435i+离线数据包跑通,环境搭建 - 知乎

Win10+VS2017+CUDA10.1环境下配置BundleFusion - 知乎

BundleFusion+WIN11+VS2019 + CUDA11.7环境配置-CSDN博客

我的环境:Win 11专业版,显卡Nvidia RTX 4090D(CUDA驱动572.83,最大支持CUDA12.8)。

step1. 先安装Visual Studio 2019 community

项目首页 - VisualStudio2019社区版离线下载资源:Visual Studio 2019 社区版离线下载资源本仓库提供了一个名为 `vs_Community-2019.zip` 的资源文件,该文件包含了 Visual Studio 2019 社区版的离线下载内容 - GitCode

 下载,点击安装,只选择C++桌面开发模块,选中右侧在msvc-x86/64、win10SDK(和win11sdk)。

step 2. 安装CUDA 11.8

进入官网CUDA Toolkit Archive | NVIDIA Developer

选择版本号11.8,选择WIN 11 x86_64,进行local离线安装模式:下载对应.exe。

双击.exe,选择自定义安装,不选Other components 和 Driver components,下一步。

在安装界面会显示CUDA检测到的VS版本(我的是2019)。

检验:windows powershell中:nvcc -V,输出版本11.8说明安装成功。

检验2:右键点击 此电脑->属性->高级系统设置->环境变量,在系统变量中自动出现CUDA_PATH和CUDA_PATH_V11_8的路径。

step 3. 安装DirectX SDK

Download DirectX SDK from Official Microsoft Download Center

下载DXSDK_Jun10.exe,双击安装(注意可能出现之前安装的Microsoft Visual C++ 2010 x86 Redistributable和Microsoft Visual C++ 2010 x64 Redistributable 引起的问题):accept->not participate,等待下载和安装完成。

查看电脑的系统变量中,自动出现DXSDK_DIR。

step 4. 安装meshlab

MeshLab - Windows官方下载 | 微软应用商店 | Microsoft Store

可以直接由microsoft store安装,用来可视化bundlefusion生成的.ply文件。

由于我不用realsense或kinect实时采集数据,而是运行离线的.sense数据集(地址:BundleFusion),所有没有配置Realsense.SDK(配置详情请参考[1])。

step 5. 下载BundleFusion和相关依赖库源码

 BundleFusion:

Bniessner/BundleFusion: [Siggraph 2017] BundleFusion: Real-time Globally Consistent 3D Reconstruction using Online Surface Re-integrationhttps://github.com/niessner/BundleFusionmLib:github.comhttps://github.com/niessner/mLibmLib external:

百度网盘 请输入提取码https://pan.baidu.com/share/init?surl=CJysQCHl4t7RPfvqliwfew提取码:0x4t。

三个文件解压缩,注意BundleFusion-master的存放路径不包含中文、空格,不要放在桌面。

将mLib-master解压缩后的文件替换BundleFusion-master\external\mLib;

将mlibExternal解压缩后,放在BundleFusion-master同一级文件夹下。

step 6. 更改代码

用VS2019打开BundleFusion-master/BundleFusion-master/FriedLiver/FriedLiver.sln

(点击确定:重定向项目:win 10 sdk)

6.1 修改FriedLiver.vcxproj

ctrl+f,查找7.0(共两处),替换为CUDA版本号 11.8。

6.2 修改BundleFusion-master\external\mLib\include\core-base\common.h

将代码第61行#include <boost/serialization/array_wrapper.hpp>

改为#include <boost/serialization/array.hpp>

6.3 修改mLibExternal\include\Eigen\src\Core\util\Macros.h

将310行改为

#if defined(_MSC_VER) && (_MSC_VER < 1900) && (!defined(__INTEL_COMPILER))

6.4 修改\SiftGPU\ProgramCU.cu

参考Fix GPU hangs in SiftGPU by stotko · Pull Request #56 · niessner/BundleFusion

需要注释掉if{ __syncthreads()},否则带条件的同步会引起死锁问题,导致编译成功后Fried Liver运行界面会卡住不显示。

具体注释两个地方:992行,和 1104行。

6.5 修改GlobalAppState.h

因为不用realsense或kinect实时采集输入,所以将深度相机(即带Sensor的)注释掉(反之亦然),如下图。

6.6 配置CUDA算力

在VS界面右侧解决方案资源管理器中,右键项目名FriedLiver->属性,在CUDA C/C++中Device中修改compute_35,sm_35为合适的计算能力。我的显卡虽然是NVIDIA RTX 4090D,计算能力为8.9,但改为89后,会报类似于__shfl_down未定义的错误;需要下调为合适的值,我最终改成compute_52,sm_52。

6.7 找不到 xxx.dll

编译报错:找不到FreeImage.dll,将BundleFusion-master\mLibExternal\libsWindows\dll64目录下的FreeImage.dll,复制到项目目录./x64/debug下。

报错找不到vcomp110.dll,进入Download Visual C++ Redistributable for Visual Studio 2012 Update 4 from Official Microsoft Download Center

选择download x64.exe,安装即可。

step 7. 编译生成

不报错了,但是提示参数文件zParametersBundlingDefault.txt和zParametersDefault.txt设置有问题。

首先设置zParametersBundlingDefault.txt:将s_maxNumImages = 1200改为稍微小的值比如400。注意根据SensorDataReader.cpp64行,传入.sense的图像数量m_numFrames应不超过s_maxNumImages*s_submapsize。所以如果你选择的sense规模比较大,就会报错"change param file to accommodate"。

然后修改zParametersDefault.txt:将s_sensoridx = 8,即offiline processing读取已经录制好的.sense输入,而不是实时采集的相机。将s_hashNumSDFBlocks调小为100000。将s_binaryDumpSensorFile = "最好是.sense的绝对路径",设置好输入路径,最后生成的.ply也保存在该路径下

编译运行,应该没有问题了:

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

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

相关文章

WPF prism

Prism Prism.Dryloc 包 安装 Nuget 包 - Prism.DryIoc 1. 修改 App.xaml 修改 App.xaml 文件&#xff0c;添加 prism 命名空间, 继承由 Application → PrismApplication&#xff0c;删除默认启动 url, StartupUri“MainWindow.xaml” <dryioc:PrismApplicationx:Class…

[Redis] Redis:高性能内存数据库与分布式架构设计

标题&#xff1a;[Redis] 浅谈分布式系统 水墨不写bug 文章目录 一、什么是Redis&#xff1f;一、核心定位二、核心优势三、典型应用场景四、Redis vs 传统数据库 二、架构选择与设计1、单机架构&#xff08;应用程序 数据库服务器&#xff09;2、应用程序和数据库服务器分离3…

React 第四十九节 Router中useNavigation的具体使用详解及注意事项

前言 useNavigation 是 React Router 中一个强大的钩子&#xff0c;用于获取当前页面导航的状态信息。 它可以帮助开发者根据导航状态优化用户体验&#xff0c;如显示加载指示器、防止重复提交等。 一、useNavigation核心用途 检测导航状态&#xff1a;判断当前是否正在进行…

【JavaEE】Spring事务

目录 一、事务简介二、Spring事务的实现2.1 事务的操作2.2 分类2.2.1 Spring编程式事务2.2.2 Spring 声明式事务 Transactional2.2.2.1 Transactional 详解2.2.2.1.1 rollbackFor2.2.2.1.2 Isolation2.2.2.1.3 propagation 一、事务简介 事务&#xff1a;事务是⼀组操作的集合…

Android15 userdebug版本不能remount

背景描述&#xff1a; 最近调试Android Vendor Hal的时候发现一个奇怪的现象: android userdebug版本刷到设备中&#xff0c;执行adb root没提示错误&#xff0c;但是没有获取到root权限。 Android设备运行的系统版本有三种情况&#xff1a;user版本、userdebug版本和eng版本…

R包安装报错解决案例系列|R包使用及ARM架构解决data.table安装错误问题

有不少同学是Mac系统的&#xff0c;分析过程中会发现部分R包总是安装不成功&#xff0c;这是因为部分R包基于windowsx86架构编译的&#xff0c;最常见的就是含 C/C/Fortran 的包&#xff0c;对于初学者都是建议linux和win去做&#xff0c;Windows 通常直接安装预编译好的二进制…

Linux上安装MongoDB

目录 一、在Linux系统安装MongoDB服务器 1、下载MongoDB 2、上传MongoDB并解压 3、创建必要目录 4、配置环境变量 5、创建配置文件 6、启动命令 7、验证安装 二、在Linux系统安装MongoDB客户端Shell 1、下载MongoDB Shell 2、上传MongoDB Shell并解压 3、配置环境变…

Redis最佳实践——安全与稳定性保障之访问控制详解

Redis 在电商应用的安全与稳定性保障之访问控制全面详解 一、安全访问控制体系架构 1. 多层级防护体系 #mermaid-svg-jpkDj2nKxCq9AXIW {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-jpkDj2nKxCq9AXIW .error-ico…

【华为开发者空间 x DeepSeek】服务器运行Ollama并在本地调用

文章概述 本文介绍了如何在 华为开发者空间 中快速部署并使用 Ollama 模型运行框架&#xff0c;并结合 deepseek-r1 模型进行本地或远程交互推理。内容涵盖环境准备、模型配置、网卡绑定、内网穿透、API调用等多个环节&#xff0c;适合希望在华为云上快速搭建本地类大模型推理…

STM32之IIC(重点)和OLED屏

内部集成电路概述 基本概念 内部集成电路&#xff08;Inter Integrated Circuit&#xff09;的简称叫做IIC或者I2C&#xff0c;是一种简单的、半双工同步通信的串行通信接口&#xff0c;IIC总线是上世纪80年代&#xff08;1982年&#xff09;由飞利浦公司设计出来&#xff0c…

学习海康VisionMaster之表面缺陷滤波

一&#xff1a;进一步学习了 今天学习下VisionMaster中的表面缺陷滤波&#xff1a;简单、无纹理背景的表面缺陷检测&#xff0c;可以检测表面的异物&#xff0c;缺陷&#xff0c;划伤等 二&#xff1a;开始学习 1&#xff1a;什么表面缺陷滤波&#xff1f; 表面缺陷滤波的核心…

游戏引擎学习第314天:将精灵拆分成多个层

回顾并为今天的工作做准备 我们今天继续昨天开始的工作&#xff0c;现在我们要回到渲染中处理 Z 值的最终环节。我们目前已经有一个我们认为还算合理的排序方式&#xff0c;虽然可能还需要在接下来的过程中进行一些调整&#xff0c;但总体上已经有了一个明确的方向。 我们已经…

【学习笔记】深度学习-梯度概念

一、定义 梯度向量不仅表示函数变化的速度&#xff0c;还表示函数增长最快的方向 二、【问】为什么说它表示方向&#xff1f; 三、【问】那在深度学习梯度下降的时候&#xff0c;还要判断梯度是正是负来更新参数吗&#xff1f; 假设某个参数是 w&#xff0c;损失函数对它的…

【数据结构】图的存储(邻接矩阵与邻接表)

图的存储结构 因为图中既有节点&#xff0c;又有边(节点与节点之间的关系)&#xff0c;因此&#xff0c;在图的存储中&#xff0c;只需要保存&#xff1a;节点和边关系即可。 节点保存比较简单&#xff0c;只需要一段连续空间即可&#xff0c;那边关系该怎么保存呢&#xff1…

tomcat yum安装

使用yum安装 yum install -y java-1.7.0-openjdk* tomcat* --disablerepoepel## java-1.7.0-openjdk* 注意&#xff1a;最终安装的是java-1.8.0版本## --disablerepoepel 禁用&#xff1a;EPEL源&#xff0c;防止版本冲突 java -version (2) 启停&#xff1a;Tomcat 7 s…

从翻译后修饰角度解析人工合成途径与底盘细胞的适配性-文献精读136

Compatibility between synthetic pathway and chassis cells from the viewpoint of post-translational modifications 从翻译后修饰角度解析人工合成途径与底盘细胞的适配性 摘要 揭示工程化设计的人工合成途径与底盘细胞整体代谢网络的交互作用及适配性机制是合成生物学研…

Cesium快速入门到精通系列教程一

一、打造第一个Cesium应用 1、官方渠道下载Cesium&#xff08;可选择历史版本&#xff09; ​​GitHub Releases页面​​ 访问 Cesium GitHub Releases&#xff0c;此处列出了所有正式发布的版本。 通过标签&#xff08;如 v1.95.0&#xff09;选择目标版本&#xff0c;下载…

[Windows] 剪映 视频编辑处理

附链接&#xff1a;夸克网盘分享&#xff08;点击蓝色字体自行保存下载&#xff09;

决策树 GBDT XGBoost LightGBM

一、决策树 1. 决策树有一个很强的假设&#xff1a; 信息是可分的&#xff0c;否则无法进行特征分支 2. 决策树的种类&#xff1a; 2. ID3决策树&#xff1a; ID3决策树的数划分标准是信息增益&#xff1a; 信息增益衡量的是通过某个特征进行数据划分前后熵的变化量。但是&…

stm32 / arduino TPL0401A使用教程

这是在给英国的一个学生讲课时用到的一个芯片&#xff0c;做一个dcdc的反馈电路&#xff0c;刚开始用的不是这个&#xff0c;后来发现国内这个芯片用的挺成熟&#xff0c;就选择了这个。 芯片说明 首先我买的是TPL0401A,我发现淘宝上卖的都是A&#xff0c;其实想用C&#xff0…