3dmatch-toolbox详细安装教程-Ubuntu14.04

3dmatch-toolbox详细安装教程-Ubuntu14.04

  • 前言
  • docker搭建Ubuntu14.04
  • 安装第三方库
    • 安装cuda/cundnn
    • 安装OpenCV
    • 安装Matlab
  • 安装以及运行3dmatch-toolbox
    • 1.安装测试3dmatch-toolbox(对齐两个点云)
  • 总结

前言

paper:3DMatch: Learning Local Geometric Descriptors from RGB-D Reconstructions 【CVPR-2017】
githup::https://github.com/1447121704/3dmatch-toolbox
提示:3dmatch-toolbox源码作者只在Ubuntu 14.04上安装运行。
最近在docker的ubuntu14.04容器上配置3dmatch-toolbox运行环境时踩了很多坑,在这期间查阅了很多资料和博客,于是想对安装过程进行总结,方便自己反复查阅以及分享经验避免大家重复踩坑。
博主是用docker在ubuntu14.04容器中安装的3dmatch-toolbox,后续会打包成docker的镜像文件分享给大家。

docker搭建Ubuntu14.04

windows10下docker的安装教程参考博主之前的博文《【docker】Windows10系统下安装并配置阿里云镜像加速》,这里默认大家都装好docker了。
docker命令大全参考

# 获取镜像ubuntu14.04
docker pull snoopy86/desktop-dockers
# 查看镜像
docker images
# 创建(并启动)gpu版本容器,将容器内部的端口5900和22映射到宿主机上的相同端口
docker run -it --privileged=True --shm-size 8g --gpus all --name 3dmatch -p 5900:5900 -p 22:22 -d snoopy86/desktop-dockers:latest
# 只查看正在运行的容器
docker ps
# 进入容器
docker attach 3dmatch 
# 或者
docker exec -it 3dmatch /bin/bash

win10下cmd进行docker容器内部:

这里镜像博主找了很久,但是有个小问题,root用户的密码不知道:

解决办法如下,在cmd进行ubuntu容器时候设置root的密码

# 设置root密码
passwd root
# 这里也重置ubuntu(用户)的密码
passwd ubuntu

# 查看ubuntu版本
lsb_release -a
# 更新apt库,更新软件列表
sudo apt-get update
sudo apt-get upgrade

安装第三方库

安装cuda/cundnn

【参考】博主的ubuntu18.04下深度学习环境配置详细教程,按照比较类似博主不再赘述。

假如你是和博主一样用docker使用ubuntu14.04容器来搭建环境,推荐按照博主的选项来。

安装OpenCV

【OpenCV安装教程参考】
【OpenCV2.4.11官网地址】,直接下载安装即可(推荐)。

# 安装依赖项
sudo apt-get install build-essential cmake libgtk2.0-dev pkg-config python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev
#下载源码包到Downloads(不推荐)
cd Downloads
wget https://github.com/opencv/opencv/archive/2.4.11.zip
# 解压opencv源代码并进入目录
sudo apt-get install unzip
unzip opencv-2.4.11.zip && cd opencv-2.4.11
# 创建并进入构建目录
mkdir build && cd build
# 开始编译和安装
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D CUDA_GENERATION=Kepler ..
# 4线程数量,根据电脑性能选择合适的数字
make -j4
sudo make install
#验证安装是否完成
# 安装pkg-config工具
sudo apt-get install -y pkg-config
# 查询OpenCV版本
pkg-config --modversion opencv
# 查询OpenCV库
pkg-config --cflags opencv
# 查询头文件目录
pkg-config --libs opencv

安装Matlab

【参考】
1.下载安装包和破解文件
matlabR2016b源码 提取码:kov1
下载的Linux matlabR2016b文件夹内有三个文件:

ubuntu14.04有个神坑,不能安装百度云,这里博主是下载到win10下,然后将三个文件夹打包后从win10主机复制文件到docker容器ubuntu14.04。

# 主机复制文件到docker容器
docker cp  hostfilepath  containerid:/filepath
#  eg:
docker cp  E:\BaiduNetdiskDownload\Linux.zip acd42a2ba5f2://home/ubuntu/Downloads


# 解压文件夹
unzip Linux.zip
# 解压Matlab 2016b Linux64 Crack.rar文件
sudo apt-get install unrar
cd Linux && unrar x Matlab_2016b_Linux64_Crack.rar
# 解压出如下文件
# license_server.lic
# Matlab_2016b_Linux64_Crack.rar
# R2016b
# license_standalone.lic
# MATLAB_Production_Server
# readme.txt
# 在Documents下新建matlab文佳夹用于挂载镜像
mkdir /home/ubuntu/Downloads/matlab
# 挂载镜像1
sudo mount -t auto -o loop /home/ubuntu/Downloads/Linux/R2016b_glnxa64_dvd1.iso /home/ubuntu/Downloads/matlab


2.安装Matlab

# 在挂载1的文件夹外执行
sudo /home/ubuntu/Downloads/matlab/install


同意条款下一步,在解压生成的readme.txt文件中找到"Use a File Installation Key":

一路下一步,直到系统提示挂载镜像2:

卸载镜像1,挂载镜像2,然后点击ok继续安装,等待程序运行结束:

# 新开一个命令行
sudo umount /home/ubuntu/Downloads/matlab
# 挂载到同一位置
sudo mount -t auto -o loop /home/ubuntu/Downloads/Linux/R2016b_glnxa64_dvd2.iso /home/ubuntu/Downloads/matlab	



3.注册并运行

# 安装完成后,将解压得到的R2016b/bin文件复制到安装目录下替换原有文件
sudo cp -r /home/ubuntu/Downloads/Linux/R2016b/bin/ /usr/local/MATLAB/R2016b/
# 再将解压得到的license_standalone.lic复制到安装目录
sudo mkdir /usr/local/MATLAB/R2016b/bin/licenses/ 
sudo cp /home/ubuntu/Downloads/Linux/license_standalone.lic /usr/local/MATLAB/R2016b/bin/licenses/ 
# 完成上述操作后把挂载卸载
sudo umount /home/ubuntu/Downloads/matlab
# 执行命令运行
sudo /usr/local/MATLAB/R2016b/bin/matlab


弹出激活框,然后导入/usr/local/MATLAB/R2016b/bin/licenses/ 文件目录下选择license_standalone.lic这个文件,即可激活。

完成安装。

安装以及运行3dmatch-toolbox

1.安装测试3dmatch-toolbox(对齐两个点云)

源码作者给出的过程和效果示意图:

# 新建3DMatch文件夹
mkdir 3DMatch && cd 3DMatch
# 通过git下载3dmatch-toolbox源码,需要科学上网
sudo apt-get install git 
git clone https://github.com/andyzeng/3dmatch-toolbox.git 3dmatch-toolbox
cd 3dmatch-toolbox/core
# 编译 C++/CUDA 演示代码
./compile.sh
# 下载3DMatch预训练权重
./download-weights.sh # 3dmatch-weights-snapshot-137000.marvin

下载权重出现以下问题,打开download-weights.sh文件添加 “–no-check-certificate”


加载两个示例 3D 点云,计算其 TDF 体素网格体积,并计算随机表面关键点及其 3DMatch 描述符,保存到磁盘上的二进制文件。

./demo ../data/sample/3dmatch-demo/single-depth-1.ply fragment-1
./demo ../data/sample/3dmatch-demo/single-depth-2.ply fragment-2 

成功运行的截图:


保存到磁盘上的对应二进制文件。

可能出现 “ error while loading shared libraries: libopencv_core.so.2.4: cannot open shared object file: No such file or directory” 错误

解决方法:

# 编辑修改文件ld.so.conf
sudo gedit /etc/ld.so.conf
# 插入信息,路径要根据自己的具体情况设置
include /usr/local/include/opencv/*
/sbin/ldconfig -v
# 保存退出执行以下命令
sudo ldconfig   

opencv下是头文件:

插入的内容:
=
在 Matlab 中运行以下脚本,加载关键点和3DMatch描述符,并使用RANSAC注册两个点云,对齐的点云的可视化保存到文件“result.ply”。

# 启动 Matlab 
sudo /usr/local/MATLAB/R2016b/bin/matlab
# 执行命令
demo

该文件也可以使用Meshlab或任何其他3D查看器进行查看。

注意:由于默认情况下随机选择的关键点不正确,首次尝试此演示时可能会导致对齐失败。


这里博主先暂时告一段落,后续会把其他部分内容补上。

总结

尽可能简单、详细的介绍3dmatch-toolbox的安装流程以及解决了安装过程中可能存在的问题。后续会根据自己学到的知识结合个人理解讲解3dmatch-toolbox的原理和代码。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于单片机的智能寻光小车设计

摘 要:随着物联网技术的飞速发展和逐渐成熟,以单片机为主的智能小车在巡查、仓储、探险及国防等领域得到广泛应用。本文设计了一种基于单片机的智能寻光小车,该小车以STC89C52RC 芯片为设计核心,结合光敏传感器和超声波传感器等多…

初识C语言·编译与链接

1 翻译环境和运行环境 C语言标准ANSI C 实现C语言代码的时候 一般需要经过两种环境,一是翻译环境,二是运行环境,计算机能识别的是二进制的指令,人写完代码后通过翻译环境,使代码变成计算机能读懂的可执行的机器指令&a…

MySQL组复制的介绍

前言 本文介绍关于MySQL组复制的背景信息和基本原理。包括,介绍MySQL传统复制方法的原理和隐患、介绍组复制的原理,单主模式和多主模式等等。通过结合原理图学习这些概念,可以很好的帮助我们理解组复制技术这一MySQL高可用方案,有…

ChatGPT 4.0 升级指南, ChatGPT Plus(GPT 4.0) 有何优势?

1.ChatGPT 是什么? ChatGPT 是由 OpenAI 开发的一种基于人工智能的聊天机器人,它基于强大的语言处理模型 GPT(Generative Pre-trained Transformer)构建。它能够理解人类语言,可以为我们解决实际的问题。 ChatGPT 4.…

关于网络面试题汇总

什么是TCP/IP五层模型?它们的作用是啥?基于TCP/IP实现的应用(层协议)有哪些? TCP/IP五层模型,从上向下分别是: 应用层:应用程序本身,应用层的作用是负责应用程序之间的…

python使用fabric库

目录 一:介绍 二:远程命令执行 三:文件上传,下载 四:执行多台服务器命令 一:介绍 Fabric是一个Python库,用于简化SSH连接和自动化任务。它提供了一个简单的API来执行远程命令、上传和下载文…

京东广告算法架构体系建设--大规模稀疏场景高性能训练方案演变

一、前言 京东广告训练框架随着广告算法业务发展的特点也在快速迭代升级,回顾近几年大致经历了两次大版本的方案架构演变。第一阶段,随着2016年Tensorflow训练框架的开源,业界开始基于Tensorflow开源框架训练更复杂的模型。模型对特征规模和…

ctfshow——文件包含

文章目录 web 78——php伪协议第一种方法——php://input第二种方法——data://text/plain第三种方法——远程包含(http://协议) web 78——str_replace过滤字符php第一种方法——远程包含(http://协议)第二种方法——data://&…

Visual Studio 2010+C#实现信源和信息熵

1. 设计要求 以图形界面的方式设计一套程序,该程序可以实现以下功能: 从输入框输入单个或多个概率,然后使用者可以通过相关按钮的点击求解相应的对数,自信息以及信息熵程序要能够实现马尔可夫信源转移概率矩阵的输入并且可以计算…

电商推荐系统

此篇博客主要记录一下商品推荐系统的主要实现过程。 一、获取用户对商品的偏好值 代码实现 package zb.grms;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.conf.Configured; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.Doub…

C++内存分区模型

C程序在执行时,将内存大方向划为4个区域。分别是代码区、全局区、栈区、堆区。 栈区:由编译器自动分配释放,存放函数的参数值、局部变量等。 堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系…

阅读笔记——《RapidFuzz: Accelerating fuzzing via Generative Adversarial Networks》

【参考文献】Ye A, Wang L, Zhao L, et al. Rapidfuzz: Accelerating fuzzing via generative adversarial networks[J]. Neurocomputing, 2021, 460: 195-204.【注】本文仅为作者个人学习笔记,如有冒犯,请联系作者删除。 目录 摘要 一、介绍 二、相关…

项目02《游戏-07-开发》Unity3D

基于 项目02《游戏-06-开发》Unity3D , 接下来做UI框架的逻辑系统,管理器和UI背包, 首先闯将UI框架的两个重要脚本 BasePanel.cs 和 UIManager.cs , 双击BasePanel.cs脚本修改代码: using UnityEngine; pu…

Redis核心技术与实战【学习笔记】 - 17.Redis 缓存异常:缓存雪崩、击穿、穿透

概述 Redis 的缓存异常问题,除了数据不一致问题外,还会面临其他三个问题,分别是缓存雪崩、缓存击穿、缓存穿透。这三个问题,一旦发生,会导致大量的请求积压到数据库。若并发量很大,就会导致数据库宕机或故…

【UE 材质】扇形材质

目录 效果 步骤 (1)控制扇形的弧宽度 (2)控制扇形的角度 (3)完整节点 效果 步骤 (1)控制扇形的弧宽度 创建一个材质,混合模式设置为“Additive”,着色…

用的到的linux-删除文件-Day3

前言: 上一节,我们讲到了怎么去移动文件,其中使用到两大类的脚本命令即cp和mv。各两种命令都可以完成移动,但是cp是复制粘贴的方式,可以选择原封不动的复制粘贴过来,即不修改文件及文件夹的创建时间等&…

2-2 动手学深度学习v2-损失函数-笔记

损失函数,用来衡量预测值和真实值之间的区别。是机器学习里面一个非常重要的概念。 三个常用的损失函数 L2 loss、L1 loss、Huber’s Robust loss 均方损失 L2 Loss l ( y , y ′ ) 1 2 ( y − y ′ ) 2 l(y,y^{\prime})\frac{1}{2}(y-y^{\prime})^{2} l(y,y′)21…

分享springboot框架的一个开源的本地开发部署教程(若依开源项目开发部署过程分享持续更新二开宝藏项目PostgresSQL数据库版)

1首先介绍下若依项目: 若依是一个基于Spring Boot和Spring Cloud技术栈开发的多租户权限管理系统。该开源项目提供了一套完整的权限管理解决方案,包括用户管理、角色管理、菜单管理、部门管理、岗位管理等功能。 若依项目采用前后端分离的架构&#xf…

1 初识JVM

JVM(Java Virtual Machine),也就是 “Java虚拟机”。 对于第三点功能:即时编译 常见的JVM 默认安装在JDK中的虚拟机为HotSpot:可以用“java -version”进行查看