WIN11+CUDA11.8+VS2019配置BundleFusion

article/2025/6/19 6:01:16

参考:

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.hkcw.cn/article/BUsmpvNjij.shtml

相关文章

【基于SpringBoot的图书购买系统】Redis中的数据以分页的形式展示:从配置到前后端交互的完整实现

引言 在当今互联网应用开发中&#xff0c;高性能和高并发已经成为系统设计的核心考量因素。Redis作为一款高性能的内存数据库&#xff0c;以其快速的读写速度、丰富的数据结构和灵活的扩展性&#xff0c;成为解决系统缓存、高并发访问等场景的首选技术之一。在图书管理系统中&…

Leetcode LCR 187. 破冰游戏

1.题目基本信息 1.1.题目描述 社团共有 num 位成员参与破冰游戏&#xff0c;编号为 0 ~ num-1。成员们按照编号顺序围绕圆桌而坐。社长抽取一个数字 target&#xff0c;从 0 号成员起开始计数&#xff0c;排在第 target 位的成员离开圆桌&#xff0c;且成员离开后从下一个成员…

任务20:实现各省份平均气温预测

任务描述 知识点&#xff1a; 时间序列分析 重 点&#xff1a; 指数平滑法Python连接数据库&#xff0c;更新数据 内 容&#xff1a; 读取所有省份各月的平均气温数据预测各省份下一年1-12月的气温&#xff0c;并存储到MySQL数据库 任务指导 1. 读取所有省份各月的平…

【Unity】AudioSource超过MaxDistance还是能听见

unity版本&#xff1a;2022.3.51f1c1 将SpatialBlend拉到1即可 或者这里改到0 Hearing audio outside max distance - #11 by wderstine - Questions & Answers - Unity Discussions

VulnStack|红日靶场——红队评估四

信息收集及漏洞利用 扫描跟kali处在同一网段的设备&#xff0c;找出目标IP arp-scan -l 扫描目标端口 nmap -p- -n -O -A -Pn -v -sV 192.168.126.154 3个端口上有web服务&#xff0c;分别对应三个漏洞环境 &#xff1a;2001——Struts2、2002——Tomcat、2003——phpMyAd…

在 RK3588 上通过 VSCode 远程开发配置指南

在 RK3588 上通过 VSCode 远程开发配置指南 RK3588 设备本身不具备可视化编程环境&#xff0c;但可以通过 VSCode 的 Remote - SSH 插件 实现远程代码编写与调试。以下是完整的配置流程。 一、连接 RK3588 1. 安装 Debian 系统 先在 RK3588 上安装 Debian 操作系统。 2. 安…

Docker-搭建MySQL主从复制与双主双从

Docker -- 搭建MySQL主从复制与双主双从 一、MySQL主从复制1.1 准备工作从 Harbor 私有仓库拉取镜像直接拉取镜像运行容器 1.2 配置主、从服务器1.3 创建主、从服务器1.4 启动主库&#xff0c;创建同步用户1.5 配置启动从库1.6 主从复制测试 二、MySQL双主双从2.1 创建网络2.2 …

累加法求数列通项公式

文章目录 前言如何判断注意事项适用类型方法介绍典例剖析对应练习 前言 累加法&#xff0c;顾名思义&#xff0c;就是多次相加的意思。求通项公式题型中&#xff0c;如果给定条件最终可以转化为 a n 1 − a n f ( n ) a_{n1}-a_nf(n) an1​−an​f(n)的形式&#xff0c;或者…

vue3的watch用法

<template><div class"container mx-auto p-4"><h1 class"text-2xl font-bold mb-4">Vue 3 Watch 示例</h1><div class"grid grid-cols-1 md:grid-cols-2 gap-6"><!-- 基本数据监听 --><div class"…

day15 leetcode-hot100-28(链表7)

2. 两数相加 - 力扣&#xff08;LeetCode&#xff09; 1.模拟 思路 最核心的一点就是将两个链表模拟为等长&#xff0c;不足的假设为0&#xff1b; &#xff08;1&#xff09;设置一个新链表newl来代表相加结果。 &#xff08;2&#xff09;链表1与链表2相加&#xff0c;具…

边缘计算场景下的大模型落地:基于 Cherry Studio 的 DeepSeek-R1-0528 本地部署

前言 作为学生&#xff0c;我选择用 Cherry Studio 在本地调用 DeepSeek-R1-0528&#xff0c;完全是被它的实用性和 “性价比” 圈粉。最近在 GitHub 和 AI 社群里&#xff0c;大家都在热议 DeepSeek-R1-0528&#xff0c;尤其是它的数学解题和编程能力。像我在准备数学建模竞赛…

Tomcat的整体架构及其设计精髓

1.Tomcat介绍 官方文档&#xff1a;https://tomcat.apache.org/tomcat-9.0-doc/index.html 1.1 Tomcat概念 Tomcat是Apache Software Foundation&#xff08;Apache软件基金会&#xff09;开发的一款开源的Java Servlet 容器。它是一种Web服务器&#xff0c;用于在服务器端运行…

使用 Let‘s Encrypt 和 Certbot 为 Cloudflare 托管的域名申请 SSL 证书

一、准备工作 1. 确保域名解析在 Cloudflare 确保你的域名 jessi53.com 和 www.jessi53.com 的 DNS 记录已经正确配置在 Cloudflare 中&#xff0c;并且状态为 Active。 2. 安装 Certbot 在你的服务器上安装 Certbot 和 Cloudflare 插件。以下是基于 Debian/Ubuntu 和 Cent…

JAVA最新版本详细安装教程(附安装包)

目录 文章自述 一、JAVA下载 二、JAVA安装 1.首先在D盘创建【java/jdk-23】文件夹 2.把下载的压缩包移动到【jdk-23】文件夹内&#xff0c;右键点击【解压到当前文件夹】 3.如图解压会有【jdk-23.0.1】文件 4.右键桌面此电脑&#xff0c;点击【属性】 5.下滑滚动条&…

【算法】插入排序

算法系列五&#xff1a;插入排序 一、直接插入排序 1.原理 2.实现 3.性质 3.1时间复杂度 3.2空间复杂度 3.3稳定性 二、希尔排序 1.原理 1.1优化方向 1.2优化原理 2.设计 2.1比较无序时 2.2比较有序时 3.实现 4.性质 4.1时间复杂度 4.2空间复杂度 4.3稳定性…

【javaSE】String类(1)

❤️❤️前言~🥳🎉🎉🎉 hellohello~,大家好💕💕,这里是E绵绵呀✋✋ ,如果觉得这篇文章还不错的话还请点赞❤️❤️收藏💞 💞 关注💥💥,如果发现这篇文章有问题的话,欢迎各位评论留言指正,大家一起加油!一起chin up!👍👍 💥个人主页:E绵绵…

使用 Java 实现一个简单且高效的任务调度框架

目录 一、任务调度系统概述 (一)任务调度的目标 (二)任务调度框架的关键组成 二、任务状态设计 (一)任务状态流转设计 (二)任务表设计(SQL) 三、单机任务调度实现 (一)获取待处理任务 (二)执行任务 代码实现(单线程版本) (三)多线程提高吞吐量 四…

【算法题】别再为 Java 算法题犯难,码蹄杯上这些新手题库帮你打好基础

我的个人主页 我的专栏&#xff1a; 人工智能领域、java-数据结构、Javase、C语言&#xff0c;MySQL&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01; 点赞&#x1f44d;收藏❤ 前言&#xff1a; 码蹄杯作为编程学习中经典的逻辑训练题型&#xff0c;是提升算…

【Java开发日记】6个Java 工具,轻松分析定位 JVM 问题 !

目录 使用 JDK 自带工具查看 JVM 情况 jps jinfo jvisualvm jcm 使用 JDK 自带工具查看 JVM 情况 JDK 自带了很多命令行甚至是图形界面工具&#xff0c;帮助查看 JVM 的一些信息。比如&#xff0c;在机器上运行 ls 命令&#xff0c;可以看到 JDK 8 提供了非常多的工具或程…

Java 大视界 -- 基于 Java 的大数据分布式文件系统在数字图书馆海量文献存储与管理中的应用优化(219)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也期待你毫无保留地分享独特见解,愿我们于此携手成长,共赴新程!💖 全网…