【PCL】Ubuntu22.04 安装 PCL 库

embedded/2024/12/22 22:53:38/

文章目录

    • 前言
    • 一、更新系统软件包
    • 二、安装依赖项
    • 三、下载 PCL 源码
    • 四、编译和安装 PCL
    • 五、测试安装成功
      • 1、 pcd_write.cpp
      • 2、CMakeLists.txt
      • 3、build

前言

  PCL(Point Cloud Library)是一个开源的大型项目,专注于2D/3D图像和点云处理。PCL为点云数据的处理和分析提供了丰富的功能和算法,这些功能包括但不限于点云滤波、特征提取、表面重建、模型拟合、配准、分割等。下面我们再 Ubuntu 环境下安装 PCL 库。

一、更新系统软件包

  首先确保 Ubuntu 系统上的软件包都是最新的,打开终端更新软件包。

sudo apt update
sudo apt upgrade

二、安装依赖项

  PCL 依赖于一些其他的库和工具,使用以下命令安装这些依赖项。

sudo apt install git cmake libboost-all-dev libeigen3-dev libflann-dev libvtk7-dev libqhull-dev

  PCL 编译与安装需要 make 与 camke,使用以下命令安装这些。

sudo apt-get install git build-essential linux-libc-dev
sudo apt-get install cmake

三、下载 PCL 源码

  在终端执行以下命令,将 PCL 源码下载到 Ubuntu 环境中。

sudo apt-get install git
git clone https://github.com/PointCloudLibrary/pcl.git

四、编译和安装 PCL

  进入下载好的 PCL 库源码目录,并创建一个新的目录用于构建。

cd pcl
mkdir release
cd release
cmake -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_PREFIX=/usr\-DCMAKE_GPU=ON -DBUILD_apps=ON -DBUILD_examples=ON \-DCMAKE_INSTALL_PREFIX=/usr ..
make
sudo make install

五、测试安装成功

  新建文件夹 test ,并新建 pcd_write.cpp,CMakeLists.txt,build 文件夹。
在这里插入图片描述

1、 pcd_write.cpp

#include <iostream>   
#include <pcl/io/pcd_io.h>  
#include <pcl/point_types.h>  int main () {  pcl::PointCloud<pcl::PointXYZ> cloud;  // 创建一个PointXYZ类型的点云对象  // 设置点云的基本属性  cloud.width    = 5;  // 设置点云的宽度(点数)  cloud.height   = 1;  // 设置点云的高度(通常为1,表示非组织化点云)  cloud.is_dense = false;  // 设置点云是否稠密(false表示点云可能包含NaN或无穷值)  cloud.resize (cloud.width * cloud.height);  // 根据宽度和高度调整点云的大小  // 使用随机数填充点云数据  for (auto& point: cloud) {  point.x = 1024 * rand () / (RAND_MAX + 1.0f);  // 为点的x坐标赋一个0到1024之间的随机浮点数  point.y = 1024 * rand () / (RAND_MAX + 1.0f);  // 为点的y坐标赋一个0到1024之间的随机浮点数  point.z = 1024 * rand () / (RAND_MAX + 1.0f);  // 为点的z坐标赋一个0到1024之间的随机浮点数  }  // 将点云数据保存为PCD文件  pcl::io::savePCDFileASCII ("test_pcd.pcd", cloud);  // 使用ASCII编码保存点云到文件  std::cerr << "Saved " << cloud.size () << " data points to test_pcd.pcd." << std::endl;  // 输出保存的点云大小信息  // 遍历并打印点云中的每个点  for (const auto& point: cloud)  std::cerr << "    " << point.x << " " << point.y << " " << point.z << std::endl;  // 输出每个点的x, y, z坐标  return (0); 
}

2、CMakeLists.txt

cmake_minimum_required(VERSION 2.6 FATAL_ERROR)  project(MY_GRAND_PROJECT)  find_package(PCL 1.3 REQUIRED)  # 将PCL的包含目录添加到项目的包含目录列表中,以便能够找到PCL的头文件  
include_directories(${PCL_INCLUDE_DIRS})  # 将PCL的库目录添加到链接器搜索路径中  
link_directories(${PCL_LIBRARY_DIRS})  add_definitions(${PCL_DEFINITIONS})  # 添加一个可执行文件目标,名为pcd_write_test,源文件为pcd_write.cpp  
add_executable(pcd_write_test pcd_write.cpp)  # 将PCL的库链接到pcd_write_test可执行文件目标。这里${PCL_LIBRARIES}包含了PCL及其依赖的所有库  
target_link_libraries(pcd_write_test ${PCL_LIBRARIES})

3、build

cd build
cmake ..
make

  当我们完成以上操作就会生成一个可执行文件,执行后会发现我们成功的生成了五个点云。
在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/embedded/121727.html

相关文章

C(十)for循环 --- 黑神话情景

前言&#xff1a; "踏过三界宝刹&#xff0c;阅过四洲繁华。笑过五蕴痴缠&#xff0c;舍过六根牵挂。怕什么欲念不休&#xff0c;怕什么浪迹天涯。步履不停&#xff0c;便是得救之法。" 国际惯例&#xff0c;开篇先喝碗鸡汤。 今天&#xff0c;杰哥写的 for 循环相…

负载均衡--相关面试题(六)

在负载均衡的面试中&#xff0c;可能会遇到一系列涉及概念、原理、实践应用以及技术细节的问题。以下是一些常见的负载均衡面试题及其详细解答&#xff1a; 一、什么是负载均衡&#xff1f; 回答&#xff1a;负载均衡是一种将网络请求或数据传输工作分配给多个服务器或网络资源…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-02

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-02 1. APM: Large Language Model Agent-based Asset Pricing Models Authors: Junyan Cheng, Peter Chin https://arxiv.org/abs/2409.17266 APM: 基于大型语言模型的代理资产定价模型&#xff08;LLM Agent-b…

版本发布 | IvorySQL 3.4 发版

[发行日期&#xff1a;2024年9月26日] IvorySQL 3.4基于PostgreSQL 16.4&#xff0c;并修复了多个问题。更多信息请参考文档网站。 >>>新版本体验链接&#xff1a; https://docs.ivorysql.org/cn/ivorysql-doc/v3.4/v3.4/1.html 1 增强功能 >>>PostgreSQL…

【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错

1. 运行项目 import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Appl…

什么是 HTTP 请求中的 options 请求?

在 Chrome 开发者工具中的 Network 面板看到的 HTTP 方法 OPTIONS&#xff0c;其实是 HTTP 协议的一部分&#xff0c;用于客户端和服务器之间进行“预检”或“协商”。OPTIONS 请求的作用是让客户端能够获取关于服务器支持的 HTTP 方法和其他跨域资源共享 (CORS) 相关的信息&am…

OceanBase企业级分布式关系数据库

简介 OceanBase 数据库是阿里巴巴和蚂蚁集团不基于任何开源产品&#xff0c;完全自研的原生分布式关系数据库软件&#xff0c;在普通硬件上实现金融级高可用&#xff0c;首创“三地五中心”城市级故障自动无损容灾新标准&#xff0c;具备卓越的水平扩展能力&#xff0c;全球首…

LeetCode24. 两两交换链表中的节点(2024秋季每日一题 32)

给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4] 输出&#xff1a;[2,1,…