ubuntu20.04下安装pcl_ubuntu安装pcl

pcl点云数据库,用来进行3D信息的获取与处理,和opencv相比较,opencv是用来处理二维信息,他是学术界与工业界针对点云最全的库,且网络上相关的资料很多。以下是pcl的安装步骤以及遇到的问题。

提前说明,本人用的是ubuntu20.04+pcl1.12.0+vtk7.1.1,使用源码编译的方式,Vtk用来完成点云的可视化。

之前安装过pcl1.12.0+vtk9.1.1,最后pcl安装可视化闪退,所以还是Vtk下载的vtk7.1.1

网络上有说pcl1.8.0+vtk7.1.1是标配,但是在安装pcl1.8.1时出现过错误。

所以本文选择安装 pcl1.12.1 + vtk7.1.1 +qt5.12(在此不做安装说明)

ubuntu18.04_pcl安装

  • 1. 首先安装pcl各种依赖
  • 2. 安装VTK
    • 2.1 首先安装vtk各种依赖:
    • 2.2 安装Vtk
  • 3. 安装pcl
  • 4. pcl测试

1. 首先安装pcl各种依赖

sudo apt-get updatesudo apt-get install git build-essential linux-libc-devsudo apt-get install cmake cmake-guisudo apt-get install libusb-1.0-0-dev libusb-dev libudev-devsudo apt-get install mpi-default-dev openmpi-bin openmpi-commonsudo apt-get install libflann1.9 libflann-dev # ubuntu20.4对应1.9sudo apt-get install libeigen3-devsudo apt-get install libboost-all-devsudo apt-get install libqhull* libgtest-devsudo apt-get install freeglut3-dev pkg-configsudo apt-get install libxmu-dev libxi-devsudo apt-get install mono-completesudo apt-get install libopenni-devsudo apt-get install libopenni2-dev

可能问题:

(1) sudo apt-get install libflann1.9 libflann-dev 显示无法定位包libflann,

首先去查看系统对应的版本   查看地址:Ubuntu – Package Search Results – libflann

搜索libflann 选择ubuntu20.04对应的codename代号:focal  :
 打开终端,执行以下命令:

lsb_release -a

可以看到ubuntu20.04对应libflan1.9

(2) 安装过程中遇到无法连接的问题,考虑更换源

参考文章:Ubuntu更换软件源_寥廓长空的博客-CSDN博客_ubuntu源

2. 安装VTK

下载地址:Download | VTK

本人下载:VTK-7.1.1.zip

2.1   首先安装vtk各种依赖:

# 首先安装VTK的依赖:X11,OpenGL;cmake和cmake-gui在安装pcl依赖的时候安装过了的话可以跳过# X11sudo apt-get install libx11-dev libxext-dev libxtst-dev libxrender-dev libxmu-dev libxmuu-dev# OpenGLsudo apt-get install build-essential libgl1-mesa-dev libglu1-mesa-dev# cmake && cmake-guisudo apt-get install cmake cmake-gui

2.2   安装Vtk

2.2.1   解压到准备好的安装目录。在目录下新建build文件夹

打开终端输入:

cmake-gui

where is the source code: 路径为VTK目录

where to build the binaries:路径为VTK目录下build的路径

如下图:

点击:configure,显示“Configuring done”。

再勾选“VTK-Group-Qt”,点击“Configure”;完成后,显示“Configuring done”;

最后点击“Generate”;显示“Generating done”,完成。

2.2.2  在build目录下,打开终端输入:

make -j8 # 要是8核处理器还比较着急看结果的话,可以:make -j16sudo make install

3. 安装pcl

下载地址: Release PCL 1.12.0 · PointCloudLibrary/pcl · GitHub

打开pcl目录,新建build文件夹

在build文件中,打开终端,输入:

cmake -DCMAKE_TYPE=None ..make -j8 // 选择8个进程同时处理,如果机子比较差,可以选择make -j4 或者 makesudo make install

到此pcl下载完成,时间会比较长。

4. pcl测试

以下使用两段代码进行测试

4.1   文件构成

cmakelist.txt

cmake_minimum_required(VERSION 2.6)project(pcl_test)find_package(PCL 1.12 REQUIRED)include_directories(${PCL_INCLUDE_DIRS})link_directories(${PCL_LIBRARY_DIRS})add_definitions(${PCL_DEFINITIONS})add_executable(pcl_test pcl_test.cpp)target_link_libraries (pcl_test ${PCL_LIBRARIES})install(TARGETS pcl_test RUNTIME DESTINATION bin)

pcl_test.cpp

#include <iostream>#include <pcl/io/pcd_io.h>#include <pcl/point_types.h>intmain (int argc, char** argv){pcl::PointCloud<pcl::PointXYZ> cloud;// Fill in the cloud datacloud.width = 5;cloud.height = 1;cloud.is_dense = false;cloud.points.resize (cloud.width * cloud.height);for (size_t i = 0; i < cloud.points.size (); ++i){cloud.points[i].x = 1024 * rand () / (RAND_MAX + 1.0f);cloud.points[i].y = 1024 * rand () / (RAND_MAX + 1.0f);cloud.points[i].z = 1024 * rand () / (RAND_MAX + 1.0f);}pcl::io::savePCDFileASCII ("test_pcd.pcd", cloud);std::cerr << "Saved " << cloud.points.size () << " data points to test_pcd.pcd." << std::endl;for (size_t i = 0; i < cloud.points.size (); ++i)std::cerr << " " << cloud.points[i].x << " " << cloud.points[i].y << " " << cloud.points[i].z << std::endl;return (0);}

运行:进入build,打开终端输入:

cmake ..make./pcl_test.cpp

得到结果:

4.2   另一个测试代码为

pcl_test.cpp

#include <iostream>#include <pcl/common/common_headers.h>#include <pcl/io/pcd_io.h>#include <pcl/visualization/pcl_visualizer.h>#include <pcl/visualization/cloud_viewer.h>#include <pcl/console/parse.h>int main(int argc, char **argv) {std::cout << "Test PCL !!!" << std::endl;pcl::PointCloud<pcl::PointXYZRGB>::Ptr point_cloud_ptr (new pcl::PointCloud<pcl::PointXYZRGB>);uint8_t r(255), g(15), b(15);for (float z(-1.0); z <= 1.0; z += 0.05){for (float angle(0.0); angle <= 360.0; angle += 5.0){pcl::PointXYZRGB point;point.x = 0.5 * cosf (pcl::deg2rad(angle));point.y = sinf (pcl::deg2rad(angle));point.z = z;uint32_t rgb = (static_cast<uint32_t>(r) << 16 |static_cast<uint32_t>(g) << 8 | static_cast<uint32_t>(b));point.rgb = *reinterpret_cast<float*>(&rgb);point_cloud_ptr->points.push_back (point);}if (z < 0.0){r -= 12;g += 12;}else{g -= 12;b += 12;}}point_cloud_ptr->width = (int) point_cloud_ptr->points.size ();point_cloud_ptr->height = 1;pcl::visualization::CloudViewer viewer ("test");viewer.showCloud(point_cloud_ptr);while (!viewer.wasStopped()){ };return 0;}

运行结果:

如果以上结果没问题,pcl就安装成功了。

5. cloudcompare软件安装

推荐snap安装方式

sudo apt-get updatesudo apt install snapsudo snap install cloudcompare
cloudcompare.CloudCompareloudcompare.ccViewer

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

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

相关文章

Shell三剑客:awk(格式化输出)

一、格式符 %d 十进制有符号整数 %u 十进制无符号整数 %f 浮点数 %s 字符串 %c 单个字符 %p 指针的值 %e 指数形式的浮点数 %x %X 无符号以十六进制表示的整数 %o 无符号以八进制表示的整数 %g 自动选择合适的表示法 % % 显示%自身 # [.#] 第一个数…

10分钟创建AIGC应用,腾讯云推出高性能应用服务HAI

降低AIGC应用开发门槛&#xff0c;才能更快发现下一个AIGC现象级应用。 12月18日&#xff0c;腾讯云宣布推出高性能应用服务(Hyper Application Inventor&#xff0c;HAI)&#xff0c;用户无需复杂配置&#xff0c;最快10分钟即可创建自己的AI应用。 HAI能够提供即插即用的算…

Vue 的两种实现:VSCode 中配置 vue 模板快捷方式的过程

1、创建配置文件&#xff1a; 其一、打开 VSCode &#xff0c;CtrlShiftP, 打开搜索框&#xff1a; 其二、输入&#xff1a;user, 并点击进去 Snippets:Configure User Snippets 其三、输入 vue3js 并回车&#xff1a; 其四、打开项目&#xff0c;发现配置文件 vue3js.code-sn…

【Python】Ubuntu 设置默认Python

有时候安装了python3.10 &#xff0c;执行python确提示无效命令&#xff0c; 执行下面的命令&#xff0c;设置python3.10的优先级&#xff0c;10为优先级&#xff0c;数字越大优先级越高&#xff1a; sudo update-alternatives --install /usr/bin/python python /usr/bin/py…

代码随想录算法训练营第六十天| 84 柱状图中最大的矩形

目录 84 柱状图中最大的矩形 84 柱状图中最大的矩形 找每个柱子左右两边第一个小于该柱子的柱子&#xff0c;栈头到栈底的顺序应该从大到小 求解矩形面积需要分别得到该柱左边和右边高度小于本柱的柱子 class Solution { public:int largestRectangleArea(vector<int>&am…

export default

export default 是 ES6 模块系统中的语法 用于将一个值、变量、函数或类作为模块的默认导出 默认导出在一个模块中只能有一个&#xff0c;而且不需要使用花括号 { } 进行包裹 下面是 export default 的用法和一些示例&#xff1a; 1.导出一个值或变量作为默认导出 // modu…

在CentOS 7上使用普通用户`minio`安装和配置MinIO

当然&#xff0c;以下是在CentOS 7上使用普通用户minio安装和配置MinIO的完整步骤&#xff0c;包括设置密码、设置开机自启动&#xff0c;以及使用minio用户启动和关闭服务的过程&#xff1a; 创建MinIO用户: sudo useradd -m minio sudo passwd minio这将创建一个可以登录的用…

【Spark源码分析】Spark的RPC通信二-初稿

Spark的RPC通信二-初稿 Spark RPC的传输层 传输层主要还是借助netty框架进行实现。 TransportContext包含创建 TransportServer、TransportClientFactory 和使用 TransportChannelHandler 设置 Netty Channel 管道的上下文。TransportClient 提供两种通信协议&#xff1a;co…

蓝桥杯-每日刷题-024

一个星期有七天 一、问题要求 题目描述 为了学英语&#xff0c;小聪做了很多卡片。其中有七张卡片&#xff0c;一面是数字1、2、3、4、5、6、7&#xff0c;另一面分别是monday、tuesday、wednesday、thursday、friday、saturday、sunday.请你对任意的数字&#xff0c;输出相应…

Layui 下拉select多选实现

1. html <div id"mo_deptment"></div> 2.引用 <script src"~/layuiadmin/layui/xm-select.js"></script>3.设置全局变量存储控件 var mo_deptmentSelect; 4.layui.use 中初始化 4.1 列表数据 var mo_deptmentdata [ …

红队打靶练习:DIGITALWORLD.LOCAL: DEVELOPMENT

信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:69:c7:bf, IPv4: 192.168.12.128 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.12.1 00:50:56:c0:00:08 …

数字图像处理-空间域图像增强-爆肝18小时用通俗语言进行超详细的总结

目录 灰度变换 直方图&#xff08;Histogram&#xff09; 直方图均衡 直方图匹配&#xff08;规定化&#xff09; 空间滤波 低通滤波器 高通滤波器 ​​​​​​​ 本文章讲解数字图像处理空间域图像增强&#xff0c;大部分内容来源于课堂笔记中 灰度变换 图像增强&…

MyBatis的延迟加载(懒加载)

MyBatis 中的延迟加载是指在需要时才加载对象的某些属性或关联对象&#xff0c;而不是在初始查询时就加载所有数据。这对于性能优化和减少不必要的数据库查询非常有用。 1. 基于配置文件的延迟加载 在 MyBatis 的 XML 映射文件中&#xff0c;你可以使用 lazyLoadingEnabled 和…

使用Python将OSS文件免费下载到本地:第一步 列举OSS文件

大家好,我是水滴~~ 本文将介绍了使用的知识点、以及列举OSS文件的代码、并对该代码进行详细解析、最后给出部署方案,希望能对你有所帮助! 《Python入门核心技术》专栏总目录・点这里 系列文章 使用Python将OSS文件免费下载到本地:项目分析和准备工作使用Python将OSS文件免…

【网络安全】学习Web安全必须知道的一本书

【文末送书】今天推荐一本网络安全领域优质书籍。 目录 正文实战案例1&#xff1a;使用Docker搭建LAMP环境实战案例2&#xff1a;使用Docker搭建LAMP环境文末送书 正文 学习Web安全离不开Web&#xff0c;那么&#xff0c;需要先来学习网站的搭建。搭建网站是每一个Web安全学习…

为什么SSL证书是必备之物?

SSL证书的首要任务是保障用户和网站之间的数据传输安全。未加密的数据传输容易受到中间人攻击&#xff0c;使敏感信息暴露于风险之中。SSL通过加密数据&#xff0c;有效地抵御了这些潜在的威胁&#xff0c;确保用户的隐私得到充分保护。 采用SSL证书的网站在浏览器地址栏中通常…

如何进行USB丢弃攻击?

USB丢弃攻击&#xff0c;类似于一场表演艺术&#xff0c;您需要构建一个引人入胜的故事&#xff0c;激发目标的好奇心&#xff0c;让他们忽略基本的安全意识&#xff0c;插入您精心准备的USB设备! 本文章仅限娱乐&#xff0c;请勿模仿或进行违法活动&#xff01; 一、选择放置…

Java版企业电子招投标系统源代码,支持二次开发,采用Spring cloud微服务架构

招投标管理系统是一个集门户管理、立项管理、采购项目管理、采购公告管理、考核管理、报表管理、评审管理、企业管理、采购管理和系统管理于一体的综合性应用平台。它适用于招标代理、政府采购、企业采购和工程交易等业务的企业&#xff0c;旨在提高项目管理的效率和质量。该系…

Http---HTTP响应报文

1. HTTP响应报文分析 HTTP 响应报文效果图: 响应报文说明: --- 响应行/状态行 --- HTTP/1.1 200 OK # HTTP协议版本 状态码 状态描述 --- 响应头 --- Server: Tengine # 服务器名称 Content-Type: text/html; charsetUTF-8 # 内容类型 Transfer-Encoding: chunked # 发送给客…

【Qt之Quick模块】5. QML基本类型及示例用法

QML格式 QML基本类型 在 QML 中&#xff0c;有以下基本类型&#xff1a; int&#xff1a;整数类型。 Rectangle {function myFunction() {// 输出 debug 信息console.log("11 " (11));}Component.onCompleted: {myFunction();} }结果&#xff1a; 2. real&…