windows下运行ROSEFusion

news2024/9/30 3:28:10

其实LZ已经不再是两年前的Linux小白了,至于为什么要在windows下配置环境,是因为LZ在Linux下已经成功编译成功了ROSEFusion,但运行时一直报错Frame could not be processed,在github下的issue里面查询得知可能是CUDA版本问题。另外,作者提供的docker的nvidia驱动版本和LZ的显卡也不兼容,image无法创建container。LZ实在不想重装cuda,再编译opencv-cuda了,转念一想在windows之前有编译好的opencv-cuda,何不尝试一下,最终居然成功了也是意料之外。
环境配置如下:
win10+vs2019+cuda11.1+opencv4.5.5(with cuda support)+eigen-3.4.0+pangolin0.6
其中cuda和eigen安装比较容易,opencv-cuda需要自己编译,这里是LZ之前编译好的(VS2019+CUDA11.1 Release x64编译的OpenCV4.5.5 带CUDA和contrib模块),pangolin的安装需要事先安装git,安装方法见:https://blog.csdn.net/qq_38589460/article/details/117934776。

刚开始LZ尝试采用cmake构建vs2019的工程,几经波折生成.sln文件之后vs编译发现由于Linux文件编码和windows不同,导致一堆文件编译乱码,还有头文件找不到等一堆问题。LZ按网上utf-8转gbk编码格式尝试了,也没有成功,没办法只能另辟蹊径了。

新建CUDA11 Runtime项目:
在这里插入图片描述

将ROSEFusion各级目录下的.h文件、.cpp文件、.cu文件都放在同级目录下,如下图所示:
在这里插入图片描述

配置第三方库eigen、opencv、pangolin的属性表,其实如果注释掉pangolin可视化的部分代码还是比较容易编过的,下面的步骤就可以略过了。但是LZ又怎么可能轻易放弃呢?

报错1:
pangolin.lib(display.obj) : error LNK2001: 无法解析的外部符号 __imp_glEnableClientState
pangolin.lib(gldraw.obj) : error LNK2001: 无法解析的外部符号 __imp_glEnableClientState
main.obj : error LNK2001: 无法解析的外部符号 __imp_glClear

解决方法:在链接器中添加opengl32.lib

报错2:
pangolin.lib(image_io_zstd.obj) : error LNK2001: 无法解析的外部符号 ZSTD_isError
pangolin.lib(image_io_zstd.obj) : error LNK2001: 无法解析的外部符号 ZSTD_getErrorName
pangolin.lib(image_io_zstd.obj) : error LNK2001: 无法解析的外部符号 ZSTD_createCStream

解决方法:在链接器中添加zstd.lib

报错3:
pangolin.lib(uvc_mediafoundation.obj) : error LNK2001: 无法解析的外部符号 MFStartup
pangolin.lib(uvc_mediafoundation.obj) : error LNK2001: 无法解析的外部符号 MFShutdown
pangolin.lib(uvc_mediafoundation.obj) : error LNK2001: 无法解析的外部符号 MFCreateAttributes

解决方法:在链接器中添加mf.lib、mfplat.lib、mfreadwrite.lib、mfuuid.lib

报错4:
pangolin.lib(uvc_mediafoundation.obj) : error LNK2001: 无法解析的外部符号 IID_ICreateDevEnum
pangolin.lib(uvc_mediafoundation.obj) : error LNK2001: 无法解析的外部符号 IID_IBaseFilter
解决方法:在链接器中添加strmiids.lib
最终编译成功!

 .\ROSEFusion.exe .\example_camera.yaml .\example_data.yaml .\example_controller.yaml

然后打开cmd或powershell输入上面的命令执行编译得到的exe文件,可能还会少一些dll文件例如libpng16.dll,用everything搜索工具在电脑中查找并把复制到exe文件的同级目录即可。运行效果如下,非常完美!

在这里插入图片描述
最终还是声明一下,像深度学习、三维重建、slam这些方向最好还是使用Linux系统,一些环境和包的配置会容易很多,此文仅做参考。

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

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

相关文章

VM16 Pro+ubuntu20.04.5+GAMIT10.71安装(20230118更新包)

VMware Workstation 16 Proubuntu20.04GAMIT10.71安装测绘老中医(qq8212714)(2023-01-20)NOTE:安装环境:Windows 10 专业版,64 位操作系统, 基于 x64 的处理器1、首先在计算机中安装VMware Workstation 16 …

交叉编译(全志)

文章目录一、交叉编译概念二 、香橙派交叉编译3.带WiringPi库的交叉编译一、交叉编译概念 交叉编译,就是:在一种平台上编译,编译出来的程序,是放到别的平台上运行即编译的环境,和运行的环境不一样,属于交叉…

【基础】高低位和大小端

大小端模式出现是为了兼容不同CPU采用的不同的指令集 PowerPC架构和x86架构采用的是不同的CPU指令集。PowerPC采用精简指令集(RISC,reduced instruction set computer),x86指的是特定微处理器执行的一些计算机语言指令集。 Powe…

Obsidian 插件(一):DataView 的使用

文章目录DataView 的使用一、 环境配置二、 入门介绍1、 快速开始2、 页面和字段3、 创建查询4、 系统字段三、 接口讲解1、 表达式1.1 概述1.2 表达式类型1.3 特定类型的交互2、 函数2.1 构造器2.2 常用函数2.3 工具函数DataView 的使用 一、 环境配置 首先,我们…

ESP32设备驱动-DHT11温度湿度传感器驱动

DHT11温度湿度传感器驱动 1、DHT11介绍 DHT11数字温湿度传感器是一种复合传感器,包含一个经过校准的温湿度数字信号输出。 应用了专用的数字模块采集技术和温湿度传感技术,确保产品具有高可靠性和优异的长期稳定性。 该传感器包括一个电阻感湿元件和一个 NTC 温度测量装置,…

LeetCode题目笔记——1814. 统计一个数组中好对子的数目

文章目录题目描述题目难度——中等方法一:模拟(超时)(参考)代码/Python方法二:优化代码总结题目描述 给你一个数组 nums ,数组中只包含非负整数。定义 rev(x) 的值为将整数 x 各个数字位反转得…

Kong Api Gateway

Kong Api Gateway什么是API 网关为什么是 Kong安装Kong通过包管理器来安装启动Kong配置文件详解1、常规配置2、Nginx注入配置3、数据库存储配置4、数据库缓存配置DNS解析器配置其他杂项配置API 管理详解1、查看节点信息2、查看节点状态3、添加服务4、查询服务5、查询所有服务6、…

golang入门笔记——Hertz

文章目录Hertz介绍应用层路由层协议层传输层HZ脚手架Hertz的使用一个简单的案例:利用Hertz监听8080端口并编写/ping的get处理函数Hertz和gin一样,提供了分组路由的功能Hertz路由的匹配优先级:静态路由>命名路由>通配路由参数绑定&#…

SD卡读写实验(SPI模式)

对于 SD 卡的 SPI 模式而言,采用的 SPI 的通信模式为模式 3,即 CPOL1,CPHA1,在 SD 卡 2.0 版本协议中,SPI_CLK 时钟频率可达 50Mhz。SD 卡的 SPI 模式,只用到了 SDIO_D3(SPI_CS)、SD…

16投影矩阵和最小二乘法

投影矩阵和最小二乘法 投影矩阵 **投影矩阵P与向量b相乘将会把投影到的列空间A中。**那么现在我们来考虑两个极端的例子,这两个极端的例子将会加深我们对投影矩阵的理解。 如果b在矩阵A的列空间里,那么 Pb b 如果b垂直于矩阵A的列空间,那…

经典同步问题

同步问题是一个复杂的问题,但是它也有自己的方法去处理、去分析。PV操作系统的解题思路:关系分析。找出题目中描述的各个进程,分析它们之间的同步、互斥关系。(从事件的角度分析)整理思路。根据各进程的操作流程确定P、V操作的大致顺序。设置…

Java设计模式-备忘录模式、备忘录模式应用场景是什么、又怎么使用

继续整理记录这段时间来的收获,详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用! 6.11 备忘录模式 6.11.1 定义 又称快照模式,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存此状态&…

深入学习Vue.js(十一)内建组件和模块

文章目录KeepAlive组件的实现原理1.KeepAlive组件实现原理2.KeepAlive组件的代码实现(1)shouldKeepAlive(2)keepAliveInstance(3)keptAlive(4)move函数3.include和exclude4.缓存策略…

视频生成动画数据OpenPose+OpenCV

我们只是使用OpenPose,不包括深度学习和代码的部分,会用就OK。 1.打开OpenPose的官网,直接进入安装页面,地址如下: OpenPose: OpenPose Doc - Installation 2.安装的说明,大家要好好看,我们就…

吴恩达机器学习课程笔记:多元梯度下降法

1.吴恩达机器学习课程笔记:多元梯度下降法 笔记来源:吴恩达机器学习课程笔记:多元梯度下降法 仅作为个人学习笔记,若各位大佬发现错误请指正 1.1 多元特征(变量) 每一列代表一个特征,例如&…

【Github CLI】Take GitHub to the command line

目录儿~一、Git、Github、GitLab二、Github CLI——gh2.1 gh简介2.2 gh的使用2.21 Github身份验证(必选)2.22 常用命令(1)在Github仓库中打开当前项目(2)gh配置 gh config(3)克隆仓库…

(16)go-micro微服务jaeger链路追踪

文章目录一 jaeger链路追踪介绍什么是链路追踪:链路追踪主要功能:二 jaeger链路追踪作用三 jaeger链路追踪主要特性四 jaeger链路追踪原理图1.链路调用原理2. 一次调用链分析3.链路追踪存储与调用五 jaeger链路追踪五个重要组件六 jaeger链路追踪安装1.d…

Junit框架

JUnit 是一个 Java 编程语言的单元测试框架。环境配置创建maven项目&#xff0c;导入Junit配置<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api --> <dependency><groupId>org.junit.jupiter</groupId><artifactId&g…

Linux常用命令——tail命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) tail 在屏幕上显示指定文件的末尾若干行 补充说明 tail命令用于输入文件中的尾部内容。tail命令默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个&#xff0c;则在显示的每个文件前面加一个文件名…

【docker概念和实践 4】 常见命令和案例(1)

一、说明 本篇讲述当Docker安装完成后&#xff0c;进行的由浅入深的操作过程。命令种类有&#xff1a;1 进程引擎进程命令 2帮助命令 3 镜像命令 4 容器命令 5 仓库命令。 二、关于操作引擎的指令 本节讲操作引擎的启动、关闭、维护等。以下两种形势都是等价的命令格式。 方法…