PCL入门1之点云读取及可视化

本文详细介绍了如何在Ubuntu系统上安装PCL1.8.1点云库,包括所需依赖库的安装,并给出了C++代码示例,展示如何读取和可视化点云数据,如rabbit.pcd文件。
摘要由CSDN通过智能技术生成

0 引言

本文主要记录在Ubuntu系统的PCL点云库安装过程,以及PCL点云读取和可视化的c++代码示例。

1 PCL安装

本文是安装了pcl1.8大版本,可先下载 下载pcl 1.8.1 版本(点击Source code(zip)

先安装pcl1.8.1所需的依赖库:

sudo apt-get update  
sudo apt-get install git build-essential linux-libc-dev
sudo apt-get install cmake cmake-gui
sudo apt-get install libusb-1.0-0-dev libusb-dev libudev-dev
sudo apt-get install mpi-default-dev openmpi-bin openmpi-common 
sudo apt-get install libflann1.9 libflann-dev
sudo apt-get install libeigen3-dev
sudo apt-get install libboost-all-dev
sudo apt-get install libvtk7.1-qt libvtk7.1
sudo apt-get install libqhull* libgtest-dev
sudo apt-get install freeglut3-dev pkg-config
sudo apt-get install libxmu-dev libxi-dev
sudo apt-get install mono-complete
sudo apt-get install openjdk-8-jdk openjdk-8-jre

然后解压下载的pcl1.8.1源码,并进入到pcl1.8.1文件夹中:

mkdir build
cd build
cmake ..
make -j4
sudo make install

测试pcl是否安装成功的话,可用pcl_viewer xxx.pcd
如果没有pcd文件,可去点云库PCL(Point Cloud Library)的学习资源汇总下载rabbit.pcd

pcl_viewer rabbit.pcd

请添加图片描述

2 点云读取及可视化

安装PCL库之后,就像OpenCV读取lena图像一样,PCL入门先编写读取兔子(rabbit.pcd放到了data文件夹中)点云的代码,如下是主要的点云读取和可视化代码,及对应的CMakeLists.txt文件。

main.cpp文件:

#include <iostream>
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/visualization/cloud_viewer.h>

int main(int argc, char **argv) {

    // 创建PointCloud的智能指针
    // pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGBA>);
    // rabbit.pcd 只有xyz,没有rgb等
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
    // 加载pcd文件到cloud
    if(pcl::io::loadPCDFile("../data/rabbit.pcd", *cloud) == -1){
        PCL_ERROR("No file rabbit.pcd\n");
        return(-1);
    }
    std::cout << cloud->points.size() << std::endl;
    // 点云可视化
    pcl::visualization::CloudViewer viewer("Cloud Viewer");
    viewer.showCloud(cloud);

    // 循环判断是否退出
    while (!viewer.wasStopped()) {
        // 后续也可以在这里对点云做很多处理
    }
    return 0;
}

CMakeLists.txt文件:

cmake_minimum_required(VERSION 2.8)
project(PCLDemo)
set(CMAKE_CXX_STANDARD 11)

find_package(PCL REQUIRED)
# 包含头文件目录
include_directories(${PCL_INCLUDE_DIRS})
# 设置依赖库链接目录
link_directories(${PCL_LIBRARY_DIRS})
# 添加预处理器和编译器标记
add_definitions(${PCL_DEFINITIONS})

add_executable(PCLDemo main.cpp)
target_link_libraries(PCLDemo ${PCL_LIBRARIES})

PCLDemo文件树:

.
├── CMakeLists.txt
├── data
│   └── rabbit.pcd
└── main.cpp

PCLDemo文件夹下新开终端,执行如下命令:

mkdir build
cd build
cmake ..
make -j4
# 运行
./PCLDemo

运行结果:(可鼠标滚轮缩放)
请添加图片描述

如果觉得上图显示的黑色背景有点单调,也可以修改背景色,在上述代码基础上增加viewerOneOff函数和该函数调用viewer.runOnVisualizationThreadOnce(viewerOneOff)

#include <iostream>
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/visualization/cloud_viewer.h>

// 设置可视化背景颜色
void viewerOneOff(pcl::visualization::PCLVisualizer& viewer);

int main(int argc, char **argv) {

    // 创建PointCloud的智能指针
    // pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGBA>);
    // rabbit.pcd 只有xyz,没有rgb等
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
    // 加载pcd文件到cloud
    if(pcl::io::loadPCDFile("../data/rabbit.pcd", *cloud) == -1){
        PCL_ERROR("No file rabbit.pcd\n");
        return(-1);
    }
    std::cout << cloud->points.size() << std::endl;
    // 点云可视化
    pcl::visualization::CloudViewer viewer("Cloud Viewer");
    viewer.showCloud(cloud);
    // 设置背景颜色
    viewer.runOnVisualizationThreadOnce(viewerOneOff);

    // 循环判断是否退出
    while (!viewer.wasStopped()) {
        // 后续也可以在这里对点云做很多处理
    }
    return 0;
}

void viewerOneOff(pcl::visualization::PCLVisualizer& viewer){
    viewer.setBackgroundColor(1.0f, 0.5f, 0.2f); //(R=1.0)、绿色(G=0.5)和蓝色(B=0.2)
}

然后重新编译运行,运行结果如下:

请添加图片描述


Reference:




须知少时凌云志,曾许人间第一流。



⭐️👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍🌔

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZPILOTE

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值