【PCL】Ubuntu22.04 安装 PCL 库

news/2024/10/3 21:56:42 标签: linux, 音视频, c++, 人工智能, 计算机视觉

文章目录

    • 前言
    • 一、更新系统软件包
    • 二、安装依赖项
    • 三、下载 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.niftyadmin.cn/n/5689016.html

相关文章

elasticsearch设置账号和密码

1、es安装&#xff0c;挂载路径根据实际情况修改 docker run -d --restart always \ --name es \ -e "ES_JAVA_OPTS-Xms512m -Xmx512m" \ -e "discovery.typesingle-node" \ -e "TZAsia/Shanghai" \ -v /mnt/data/efk/es/data:/usr/share/elast…

Hadoop-HDFS-core-site.xml,hdfs-site.xml,yarn-site.xml,krb5.conf 都是做什么的?

hdfs的core-site.xml core-site.xml是Hadoop集群的核心配置文件&#xff0c;包含了 Hadoop 全局级别的配置设置。这些设置不仅影响 HDFS&#xff08;Hadoop Distributed File System&#xff09;&#xff0c;还影响 YARN 和 MapReduce 等其他组件。&#xff1a; 常见配置 fs…

马铃薯病害数据集:农业智能领域的核心资源与技术创新应用(猫脸码客 第206期)

马铃薯病害数据集 农业智能领域的核心资源与技术创新应用 摘要&#xff1a;本文全面阐述了马铃薯病害数据集在现代农业中的核心地位及其广泛应用。重点介绍了数据集的内容构成、目标定位及其在机器学习与深度学习领域的关键作用&#xff0c;特别是在卷积神经网络&#xff08;…

Linux高级编程_27_系统调用

文章目录 系统调用函数分类系统编程概述系统调用概述**类UNIX系统的软件层次** 用户态和内核态系统调用与库函数的关系文件操作符概述文件磁盘权限 系统调用之文件操作open:打开文件close:关闭文件write:写入read:读取 文件状态fcntl 函数stat 函数 st_mode的值示例 1&#xff…

2024年09月CCF-GESP编程能力等级认证C++编程一级真题解析

本文收录于专栏《C++等级认证CCF-GESP真题解析》,专栏总目录:点这里。订阅后可阅读专栏内所有文章。 一、单选题(每题 2 分,共 30 分) 第 1 题 据有关资料,山东大学于1972年研制成功DJL-1计算机,并于1973年投入运行,其综合性能居当时全国第三位。DJL-1计算机运算控制…

计231 作业1:熟悉C语言实验环境

问题 A: hello world 这个直接输出就好&#xff0c;没什么好说的吧 #include<stdio.h>int main() {printf("hello world");return 0; }问题 B: 按要求输出 这道题注意一下换行应该就没有什么问题了&#xff0c;一共三行&#xff0c;用三个printf来打印三…

十进制转十六进制 ← Python字符串

【知识点】 ● chr() 函数与 ord() 函数示例&#xff1a; >>> ord(0) 48>>> chr(48) 0>>> ord(9) 57>>> chr(57) 9>>> ord(A) 65>>> chr(65) A>>> ord(F) 70>>> chr(70) F ● 巧妙利用字符串的“连…

基于SpringBoot+Vue+MySQL的考勤管理系统

系统展示 管理员界面 用户界面 系统背景 随着企业规模的扩大和管理的精细化&#xff0c;传统的考勤方式已经无法满足现代企业的需求。纸质签到、人工统计不仅效率低下&#xff0c;还容易出错。因此&#xff0c;开发一套基于SpringBootVueMySQL的考勤管理系统显得尤为重要。该系…