OpenMVS学习笔记(一):WSL编译安装测试

1.CUDA和CUDNN安装

  • [1] WSL版本cuda安装:
>> wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
>> sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
>> wget https://developer.download.nvidia.com/compute/cuda/11.7.1/local_installers/cuda-repo-wsl-ubuntu-11-7-local_11.7.1-1_amd64.deb
>> sudo dpkg -i cuda-repo-wsl-ubuntu-11-7-local_11.7.1-1_amd64.deb
>> sudo cp /var/cuda-repo-wsl-ubuntu-11-7-local/cuda-*-keyring.gpg /usr/share/keyrings/
>> sudo apt-get update
>> sudo apt-get -y install cuda
  • [2] cudnn安装:
# 1.下载cudnn-linux-x86_64-8.9.2.26_cuda11-archive.tar.xz文件
# 2.解压cudnn压缩包
>> tar -xf cudnn-linux-x86_64-8.9.2.26_cuda11-archive.tar.xz
# 3.将include和lib文件夹下文件拷贝到cuda安装目录下
>> sudo cp cudnn-linux-x86_64-8.9.2.26_cuda11-archive/include/*cudnn.h /usr/local/cuda/include/
>> sudo cp  cudnn-linux-x86_64-8.9.2.26_cuda11-archive/lib/libcudnn* /usr/local/cuda/lib64
# 4.修改库的权限
>> sudo chmod a+r /usr/local/lib64/libcudnn*
  • [3] 添加系统环境变量(.zshrc或.bashrc)
export CUDA_PATH=/usr/local/cuda
export CUDA_BIN=/usr/local/cuda/bin
export PATH=$PATH::$CUDA_PATH:$CUDA_BIN
  • [4] 刷新一下系统环境变量
# 1.zsh
>> source ~/.zshrc
# 2.bash
>> source ~/.bashrc
  • [5] 查询cuda版本
>> nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Jun__8_16:49:14_PDT_2022
Cuda compilation tools, release 11.7, V11.7.99
Build cuda_11.7.r11.7/compiler.31442593_0

2.安装依赖库

2.1 apt安装依赖库

sudo apt-get -y install git cmake libpng-dev libjpeg-dev libtiff-dev libglu1-mesa-dev
sudo apt-get -y install libboost-iostreams-dev libboost-program-options-dev libboost-system-dev libboost-serialization-dev
sudo apt-get -y install libcgal-dev libcgal-qt5-dev
sudo apt-get install libglfw3-dev

2.2 OpenCV安装

  • 网上一大堆,懒得写了

3.OpenMVS编译

# 1.下载VCG源码
>> git clone https://github.com/cdcseacave/VCG.git vcglib
# 2.下载OpenMVS源码
>> cmake .. -DVCG_ROOT=[VCG源码路径]/vcglib -DCMAKE_BUILD_TYPE=Release
  • 生成目录层级:
.
├── CMakeCache.txt
├── CMakeFiles
│   ├── 3.16.3
│   ├── 3.27.0-rc3
│   ├── CMakeConfigureLog.yaml
│   ├── CMakeDirectoryInformation.cmake
│   ├── CMakeOutput.log
│   ├── CMakeRuleHashes.txt
│   ├── CMakeScratch
│   ├── CMakeTmp
│   ├── Export
│   ├── FindOpenMP
│   ├── Makefile.cmake
│   ├── Makefile2
│   ├── TargetDirectories.txt
│   ├── cmake.check_cache
│   ├── pkgRedirects
│   ├── progress.marks
│   └── uninstall.dir
├── CTestTestfile.cmake
├── ConfigLocal.h
├── Makefile
├── Modules
│   ├── FindBREAKPAD.cmake
│   ├── FindEigen3.cmake
│   └── FindVCG.cmake
├── OpenMVSConfig.cmake
├── OpenMVSConfigVersion.cmake
├── Templates
│   ├── ConfigLocal.h.in
│   ├── OpenMVSConfig.cmake.in
│   └── cmake_uninstall.cmake.in
├── Utils.cmake
├── apps
│   ├── CMakeFiles
│   ├── DensifyPointCloud
│   ├── InterfaceCOLMAP
│   ├── InterfaceMVSNet
│   ├── InterfaceMetashape
│   ├── InterfacePolycam
│   ├── Makefile
│   ├── ReconstructMesh
│   ├── RefineMesh
│   ├── Tests
│   ├── TextureMesh
│   ├── TransformScene
│   ├── Viewer
│   └── cmake_install.cmake
├── bin
│   ├── DensifyPointCloud
│   ├── InterfaceCOLMAP
│   ├── InterfaceMVSNet
│   ├── InterfaceMetashape
│   ├── InterfacePolycam
│   ├── ReconstructMesh
│   ├── RefineMesh
│   ├── Tests
│   ├── TextureMesh
│   ├── TransformScene
│   └── Viewer
├── cmake_install.cmake
├── cmake_uninstall.cmake
├── docs
│   ├── CMakeFiles
│   ├── Makefile
│   └── cmake_install.cmake
├── lib
│   ├── libCommon.a
│   ├── libIO.a
│   ├── libMVS.a
│   ├── libMath.a
│   └── pyOpenMVS.so
└── libs
    ├── CMakeFiles
    ├── Common
    ├── IO
    ├── MVS
    ├── Makefile
    ├── Math
    └── cmake_install.cmake

4.效果测试

4.0 测试数据

  • openMVS_sample

4.1 稠密点云重建(可选项)

  • 当场景部分缺失时,稠密点云重建模块可以估算一个稠密点云来恢复它们,默认采用patch匹配方法:
>> ./bin/DensifyPointCloud -w [openMVS_sample路径]/mvs-data scene.mvs
  • 使用meshlab打开点云结果scene_dense.ply
    在这里插入图片描述

4.2 粗略网格重建

  • 先前获取得到的稀疏或稠密点云被用于网格重建模块:
>> ./bin/ReconstructMesh -w [openMVS_sample]/mvs-data scene_dense.mvs -p scene_dense.ply
  • 使用meshlab打开网格生成结果scene_dense_mesh.ply
    在这里插入图片描述

4.3 网格细化(可选项)

  • 从点云获取到的网格可以进一步细化,进而恢复所有好的细节,更有甚者,恢复更大缺失的部分:
  • (a) 细化由稀疏点云获取到的网格:
>> ./bin/RefineMesh -w [openMVS_sample]/mvs-data scene.mvs -m scene_dense_mesh.ply -o scene_sparse_mesh_refine.mvs
  • 看一下结果:
    在这里插入图片描述
  • (b) 细化由稠密点云获取到的网格:
>> ./bin/RefineMesh -w [openMVS_sample]/mvs-data scene_dense.mvs -m scene_dense_mesh.ply -o scene_dense_mesh_refine.mvs
  • 看一下效果:
    在这里插入图片描述

4.4 网格纹理化

  • 前面步骤获取到的网格被用于网格纹理化模块:
>> ./bin/TextureMesh -w [openMVS_sample]/mvs-data  scene_dense.mvs -m scene_dense_mesh_refine.ply -o scene_dense_mesh_refine_texture.mvs
  • 看一下结果:
    在这里插入图片描述

5.参考资料

  • [1] OpenMVS详细安装教程(ubuntu18.04)
  • [2] OpenMVS
  • [3] openMVS_sample

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

weblogic 反序列化 [CVE-2017-10271]

一、漏洞描述 这个漏洞是wls-wsat这个接口出了问题,Weblogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。攻击者发送精心构造的…

【Unity从零开始学习制作手机游戏】第01节:控制3D胶囊体运动

1. 新建Project L01 使用3D Mobile模板。 2. 建立一个平面,用来承载物体 3. 导入Unity库内的胶囊体 下载 StandardAssets https://download.unitychina.cn/download_unity/e80cc3114ac1/WindowsStandardAssetsInstaller/UnityStandardAssetsSetup-5.6.7f1.exe …

Abaqus显示单元面的编号

注意:这里为了显示单元的面编号,而不是‘Part’的面。对于六面体单元有六个面,编号从1-6,对于四面体单元有四个面,编号从1-4。 1、要显示单元面的编号首先要进入‘Visualization’模块,如下图:…

Jmeter 性能-阶梯负载最终请求数

1、设置阶梯加压线程组请求参数 说明: 每隔2秒钟,会在1秒内启动5个线程 每次线程加载之后都会运行2s然后开始下一次线程加载 最终会加载50个线程并持续运行30s 50个线程持续运行30s后,会每隔2秒钟停止5个线程,剩余的线程继续负…

数据结构与算法-排序算法1-冒泡排序

本文先介绍排序算法,然后具体写冒泡排序。 目录 1.排序算法简介 2.常见的排序算法分类如下图: 3.冒泡排序: 1.介绍: 2.动态图解 3.举例 4.小结冒泡排序规则 5.冒泡排序代码 6.优化 7.优化后时间 代码: 运…

数据库系统概论(个人笔记)(第一部分)

数据库系统概论(个人笔记) 文章目录 数据库系统概论(个人笔记)1、介绍1.1 数据库系统应用1.2 数据库系统的历史1.3 数据库系统的目标**大学数据库例子**1.4 数据视图1.5 数据库语言1.6 数据库设计1.7 数据库引擎1.8 数据库体系结构…

2023年上半年信息系统项目管理师——综合知识真题与答案解释(4)

2023年上半年信息系统项目管理师 ——综合知识真题与答案解释(4) 61、文档的规范化管理主要体现在()方面。 ①文档书写规范 ②文档质量级别 ③图表编号规则 ④文档目录编写标准 ⑤文档管理制度 ⑥文档安全标准 A.①②③④ B.②③…

MySQL_DDL语句

1.Data类临时数据的弊端 我们之前在将ServletJSP配合处理请求的过程中 数据库起到一个存取数据的作用 但是我们之前的案例中 数据是在Data类中临时定义的 并不是从数据库中获取的 这样做是不好的 因为每一次服务器关闭之后 那么部署在其上的类也会随着卸载 紧接着和类相挂钩的静…

ms17-010(永恒之蓝)

1.漏洞介绍: 永恒之蓝(ms17-010)爆发于2017年4月14日晚,是一种利用Windows系统的SMB协议漏洞来获取系统的最高权限,以此来控制被入侵的计算机。甚至于2017年5月12日, 不法分子通过改造“永恒之蓝”制作了wannacry勒索病…

计算机网络(第八版 谢希仁 编著) 期末复习大纲

一.每章总结 第一章:分组交换,计网定义、范围划分,性能指标,五层体系结构,TCP/IP体系结构 第二章:物理层,码元,基带调制(数字信号->数字信号,也叫编码),带…

SSE介绍(实现流式响应)

写在前面 本文一起来看下SSE相关内容。 1:SSE是什么 全称,server-send events,基于http协议,一次http请求,server端可以分批推送数据, 不同于websocket的全双工通信,SSM单向通信,一般应用于需…

softmax函数与交叉熵损失详解

文章目录 一、softmax函数1.1 引入指数形式的优点1.2 引入指数形式的缺点 二、交叉熵损失函数2.1 交叉熵损失函数2.2 softmax与交叉熵损失 参考资料 一、softmax函数 softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区…

simulink-仿真以及PID参数整定/PID tuner 的使用流程

控制器搭建与参数整定 搭建一个前馈PID控制器控制系统PID tuner使用 一个懂点控制但不多的小白,因为需要利用simulink仿真,所以不得不学习一些仿真的知识,这篇文章适合和我一样的新手入门,有理解错误的地方希望大手们能够指出来共…

背完这些软件测试核心面试题,offer轻松拿捏了!

你赞同过 软件测试和开发 相关内容 01、您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。 答:有黑盒和白盒两种测试种类,黑盒有等价类划分法,边界分析法,因果图法和…

spacy微调BERT-NER模型

数据准备 加载数据集 from tqdm.notebook import tqdm import osdataset [] with open(train_file, r) as file:for line in tqdm(file.readlines()):data json.loads(line.strip())dataset.append(data)你可以按照 CLUENER 的格式准备训练数据, 例如&#xff1…

彻底搞定找不到msvcp100.dll,无法继续执行代码的问题

当您在使用电脑过程中遇到程序运行异常,提示“缺失msvcp100.dll文件”时,不必过于焦虑,此问题可通过一系列简单步骤得到有效解决。MSVCP100.dll是Microsoft Visual C库的一部分,主要用于支持某些应用程序运行所需的特定功能。如果…

ohmyzsh的安装过程中失败拒绝连接问题的解决

1.打开官网Oh My Zsh - a delightful & open source framework for Zsh 在官网能看到下面的界面 有这两种自动安装的方式 个人本次选择的是: wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O - 1.打开终端输入安装的指令 sh -c "$(wget…

(done) 什么是马尔可夫链?Markov Chain

参考视频:https://www.bilibili.com/video/BV1ko4y1P7Zv/?spm_id_from333.337.search-card.all.click&vd_source7a1a0bc74158c6993c7355c5490fc600 如下图所示,马尔可夫链条实际上就是 “状态机”,只不过状态机里不同状态之间的边上是 “…

向银行家应用程序添加日期

● 首先我们将下面图片上的时间更换成现在的时间 const now new Date(); const day now.getDate(); const month now.getMonth() 1; const year now.getFullYear(); const hour now.getHours(); const min now.getMinutes();labelDate.textContent ${day}/${month}/$…

数据降维-主成分分析PCA

1.背景: 在以前计算能力还很弱的年代,我们要分析经济数据是一件很困难的事情,所以我们需要对指标特征进行降维; 2.数据降维的意义: 一般我们降维的特征数据彼此之间是存在一定的相关性的, 二维降至一维…