当前位置: 首页 > news >正文

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的原理和代码。

相关文章:

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

3dmatch-toolbox详细安装教程-Ubuntu14.04 前言docker搭建Ubuntu14.04安装第三方库安装cuda/cundnn安装OpenCV安装Matlab 安装以及运行3dmatch-toolbox1.安装测试3dmatch-toolbox(对齐两个点云) 总结 前言 paper:3DMatch: Learning Local Geometric Descriptors from RGB-D Re…...

Hadoop与Spark横向比较【大数据扫盲】

大数据场景下的数据库有很多种,每种数据库根据其数据模型、查询语言、一致性模型和分布式架构等特性,都有其特定的使用场景。以下是一些常见的大数据数据库: NoSQL 数据库:这类数据库通常用于处理大规模、非结构化的数据。它们通常…...

软件工程知识梳理5-实现和测试

编码和测试统称为实现。 编码:把软件设计结果翻译成某种程序设计语言书写的程序。是对设计的进一步具体化,是软件工程过程的一个阶段。 测试:单元测试和集成测试,软件测试往往占软件开发总工作量的40%以上。 编码:选…...

WebRTC系列-自定义媒体数据加密

文章目录 1. 对外加密接口2. 对外加密实现前面的文章都有提过WebRTC使用的加密方式是SRTP这个库提供的,这个三方库这里就不做介绍,主要是对rtp包进行加密;自然的其调用也是WebRTC的rtp相关模块;同时在WebRTC里也提供一个自定义加密的接口,本文将围绕这个接口做介绍及分析;…...

golang的sqlite驱动不使用cgo实现 更换gorm默认的SQLite驱动

golang的sqlite驱动不使用cgo实现 更换gorm默认的SQLite驱动 最近在开发一个边缘物联网程序时使用Golang开发,用到GORM来操作SQLite数据库,GORM默认使用gorm.io/driver/sqlite这个库作为SQLite驱动,该库用CGO实现,在使用过程中遇…...

Linux 系统 ubuntu22.04 发行版本 固定 USB 设备端口号

前言: 项目中为了解决 usb 设备屏幕上电顺序导致屏幕偏移、触屏出现偏移等问题。 一、方法1:使用设备 ID 号 步骤: 查看 USB 设备的供应商ID和产品ID Bus 001 Device 003: ID 090c:1000 Silicon Motion, Inc. - Taiwan (formerly Feiya Te…...

Vue - 面试题持续更新

1.Vue路由模式 总共有Hash和History两种模式 Hash模式:在浏览器里面的符号 “#”,以及"#"后面的字符称之为Hash,用window.location.hash读取。 Hash模式的特点:hash是和浏览器对话的,和服务器没有关系&…...

Django的web框架Django Rest_Framework精讲(二)

文章目录 1.自定义校验功能(1)validators(2)局部钩子:单字段校验(3)全局钩子:多字段校验 2.raise_exception 参数3.context参数4.反序列化校验后保存,新增和更新数据&…...

VR视频编辑解决方案,全新视频内容创作方式

随着科技的飞速发展,虚拟现实(VR)技术正逐渐成为各个领域的创新力量。而美摄科技,作为VR技术的引领者,特别推出了一套全新的VR视频编辑方案,为企业提供了一个全新的视频内容创作方式。 美摄科技的VR视频编…...

有趣的CSS - 输入框选中交互动效

页面效果 此效果主要使用 css 伪选择器配合 html5 required 属性来实现一个简单的输入框的交互效果。 此效果可适用于登录页入口、小表单提交等页面,增强用户实时交互体验。 核心代码部分,简要说明了写法思路;完整代码在最后,可直…...

Unknown custom element:<xxx>-did you register the component correctly解决方案

如图所示控制台发现了爆红(大哭): 报错解释: 当我们看到报错时,我们需要看到一些关键词,比如显眼的“component”和“name”这两个单词, 因此我们就从此处切入,大概与组件有关系。…...

计算机网络自顶向下Wireshark labs-HTTP

我直接翻译并在题目下面直接下我的答案了。 1.基本HTTP GET/response交互 我们开始探索HTTP,方法是下载一个非常简单的HTML文件 非常短,并且不包含嵌入的对象。执行以下操作: 启动您的浏览器。启动Wireshark数据包嗅探器,如Wir…...

解决pandas写入excel时的ValueError: All strings must be XML compatible报错

报错内容: ValueError: All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters 报错背景 用pands批量写入excel文件,发生编码报错。检索了很多方案,都不能解决。 导致报错的原因是存在违法字符&…...

华为手表应用APP开发:watch系列 GT系列 1.配置调试设备

表开发:GT3(1)配置调试设备 初环境与设备获取手表UUID登录 AppGallery Connect 点击用户与访问初 希望能写一些简单的教程和案例分享给需要的人 鸿蒙可穿戴开发 支持外包开发:xkk9866@yeah.net 环境与设备 系统:window 设备:HUAWEI WATCH 3 Pro 开发工具:DevEco St…...

Vue(十九):ElementUI 扩展实现树形结构表格组件的勾父选子、半勾选、过滤出半勾选节点功能

效果 原理分析 从后端获取数据后,判断当前节点是否勾选,从而判断是否勾选子节点勾选当前节点时,子节点均勾选全勾选与半勾选与不勾选的样式处理全勾选和全取消勾选的逻辑筛选出半勾选的节点定义变量 import {computed, nextTick, reactive, ref} from vue; import {tree} f…...

SpringBoot RestTemplate 设置挡板

项目结构 代码 BaffleConfig /*** Description 记录配置信息* Author wjx* Date 2024/2/1 14:47**/ public interface BaffleConfig {// 是否开启挡板的开关public static boolean SWITCH true;// 文件根目录public static String ROOT_PATH "D:\\TIS\\mock";// …...

arcgis javascript api4.x加载非公开或者私有的arcgis地图服务

需求: 加载arcgis没有公开或者私有的地图服务,同时还想实现加载时不弹出登录窗口 提示:​ 下述是针对独立的arcgis server,没有portal的应用场景; 如果有portal可以参考链接:https://mp.weixin.qq.com/s/W…...

2024年美赛数学建模A题思路分析 - 资源可用性和性别比例

# 1 赛题 问题A:资源可用性和性别比例 虽然一些动物物种存在于通常的雄性或雌性性别之外,但大多数物种实质上是雄性或雌性。虽然许多物种在出生时的性别比例为1:1,但其他物种的性别比例并不均匀。这被称为适应性性别比例的变化。…...

UDP和TCP的区别和联系

传输层:定义传输数据的协议端口号,以及流控和差错校验。 协议有:TCP、UDP等 UDP和TCP的主要区别包括以下几个方面: 1、连接性与无连接性:TCP是面向连接的传输控制协议,而UDP提供无连接的数据报服务。这意…...

delete、truncate和drop区别

一、从执行速度上来说 drop > truncate >> DELETE 二、从原理上讲 1、DELETE DELETE from TABLE_NAME where xxx1.1、DELETE属于数据库DML操作语言,只删除数据不删除表的结构,会走事务,执行时会触发trigger( 触发器…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙

Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...

一些实用的chrome扩展0x01

简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序,无论是测试应用程序、搜寻漏洞还是收集情报,它们都能提升工作流程。 FoxyProxy 代理管理工具,此扩展简化了使用代理(如 Burp…...

客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践

01技术背景与业务挑战 某短视频点播企业深耕国内用户市场,但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大,传统架构已较难满足当前企业发展的需求,企业面临着三重挑战: ① 业务:国内用户访问海外服…...

GraphRAG优化新思路-开源的ROGRAG框架

目前的如微软开源的GraphRAG的工作流程都较为复杂,难以孤立地评估各个组件的贡献,传统的检索方法在处理复杂推理任务时可能不够有效,特别是在需要理解实体间关系或多跳知识的情况下。先说结论,看完后感觉这个框架性能上不会比Grap…...