PCL1.14.0安装、使用教程

写在前面

  • 本文内容
    本文是PCL1.14.0在Windows下的安装、使用教程;
    PCL、Open3D其他版本的编译和使用相关教程见
    各个版本的Open3D、PCL的编译、使用教程
  • 平台/环境
    windows11(windows10): visual studio 2022;cmake 3.22+; VsCode
  • 转载请注明出处:
    https://blog.csdn.net/qq_41102371/article/details/136423654

安装PCL1.14.0

-下载
从官方下载编译好的包:
https://github.com/PointCloudLibrary/pcl/releases
在这里插入图片描述

  • 开始安装
    在这里插入图片描述
  • 环境变量
    为PCL添加环境变量,这一步是为了运行基于PCL的程序时自动加载PCL相关动态库的,可以选择添加,这里选择不添加,因为电脑上已有其他版本PCL的环境变量,下文会在使用时教大家怎么用脚本添加临时的环境变量
    在这里插入图片描述
  • 安装路径
    自己选择合适的安装路径,这里是D:\carlos\install\PCL 1.14.0,因为我自己所有的库都安装在这里
    在这里插入图片描述
  • 选择组件
    都选上
    在这里插入图片描述
    可能会弹出一些确认窗口,点击安装就行
    在这里插入图片描述
  • 安装完成
    在这里插入图片描述
    在这里插入图片描述
    此时检查下3rdparty/OpenNI2里面是不是只有一个.msi,如果是,那么就是你之前安装过其他版本的PCL可能导致OpenNI2没法安装到当前位置,那么把之前的复制过来就好了
    比如我之前装过PCL1.10.0,系统就会检测到OpenNI2已经被安装而不会继续被安装到当前目录
    在这里插入图片描述

使用

测试demo源码和文件

我们随便找一个PCL官方提供的demo,这里选的是正态分布滤波(官方文档在此),先点击下载测试数据,再找打本地源码路径
YOUR_PATH_\PCL 1.14.0\share\doc\pcl-1.14\tutorials\sources\statistical_removal
把下载的测试数据放到该目录下
在这里插入图片描述

使用VsCode

命令行cd进入该目录,并用vscode打开该目录(注意下列命令是我的安装路径,根据自己的修改)

d:
cd "D:/carlos/install/PCL 1.14.0/share/doc/pcl-1.14/tutorials/sources/statistical_removal"
code .

在这里插入图片描述
在这里插入图片描述

添加可视化源码

官方源码将滤波后的点云直接保存,没有可视化,下面是添加了可视化的代码,将下面的代码替换statistical_removal.cpp里的内容即可

#include <iostream>
#include <chrono>
#include <thread>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/filters/statistical_outlier_removal.h>
#include <pcl/visualization/cloud_viewer.h>


template <typename PointT>
void PcdVisualizer(pcl::PointCloud<PointT> cloud, bool coordinate = false)
{
  pcl::visualization::PCLVisualizer::Ptr viewer(
      new pcl::visualization::PCLVisualizer("3D Viewer"));
  viewer->setBackgroundColor(0, 0, 0);
  pcl::PointCloud<PointT>::Ptr cloud_ptr(new pcl::PointCloud<PointT>);
  *cloud_ptr = cloud;
  viewer->addPointCloud<PointT>(cloud_ptr, "cloud");
  if (coordinate)
  {
    viewer->addCoordinateSystem(1.0, "global");
  }
  while (!viewer->wasStopped())
  {
    viewer->spinOnce(100);
    // td::this_thread::sleep_for(100ms);
    std::this_thread::sleep_for(std::chrono::milliseconds(100));
  }
}


int main()
{
  pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
  pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filtered_inliers(new pcl::PointCloud<pcl::PointXYZ>);
  pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filtered_outliers(new pcl::PointCloud<pcl::PointXYZ>);

  // Fill in the cloud data
  pcl::PCDReader reader;
  // Replace the path below with the path where you saved your file
  reader.read<pcl::PointXYZ>("table_scene_lms400.pcd", *cloud);

  std::cerr << "Cloud before filtering: " << std::endl;
  std::cerr << *cloud << std::endl;

  // Create the filtering object
  pcl::StatisticalOutlierRemoval<pcl::PointXYZ> sor;
  sor.setInputCloud(cloud);
  sor.setMeanK(50);
  sor.setStddevMulThresh(1.0);
  sor.filter(*cloud_filtered_inliers);

  std::cerr << "Cloud after filtering: " << std::endl;
  std::cerr << *cloud_filtered_inliers << std::endl;

  pcl::PCDWriter writer;
  writer.write<pcl::PointXYZ>("table_scene_lms400_inliers.pcd", *cloud_filtered_inliers, false);

  sor.setNegative(true);
  sor.filter(*cloud_filtered_outliers);
  writer.write<pcl::PointXYZ>("table_scene_lms400_outliers.pcd", *cloud_filtered_outliers, false);

  std::cout << "before filter" << std::endl;
  PcdVisualizer(*cloud);
  std::cout << "after filter" << std::endl;
  PcdVisualizer(*cloud_filtered_inliers);


  return (0);
}

编译运行

添加compile.bat和运行脚本run.bat,用来写编译脚本和运行脚本
在这里插入图片描述
在这里插入图片描述
compile.bat内容,这里DPCL_DIR就指定了寻找PCL的位置

cmake -DCMAKE_BUILD_TYPE=Release ^
-DPCL_DIR="D:/carlos/install/PCL 1.14.1/cmake" ^
-S ./ -B ./build

cmake --build ./build --config Release --target ALL_BUILD

run.bat内容,这里set PATH就在添加PCL的环境变量,程序运行时才能找到PCL的动态库

@REM 设置PCL环境变量
set PATH=D:\carlos\install\PCL 1.14.0\bin;^
D:\carlos\install\PCL 1.14.0\3rdParty\FLANN\bin;^
D:\carlos\install\PCL 1.14.0\3rdParty\VTK\bin;^
D:\carlos\install\PCL 1.14.0\3rdParty\Qhull\bin;^
D:\carlos\install\PCL 1.14.0\3rdParty\OpenNI2\Tools;%PATH%
@REM 运行程序
.\build\Release\statistical_removal.exe .\table_scene_lms400.pcd

开始编译,打开一个terminal窗口,执行编译脚本compile.bat
在这里插入图片描述
编译成功后生成statistical_removal.exe
在这里插入图片描述
运行,执行run.bat脚本

在这里插入图片描述
结果
滤波前
在这里插入图片描述
滤波后
在这里插入图片描述
如果你想使用vscode继续修改代码,需要源码跳转和补全功能,请参考:
VsCode配置PCL、Open3D自动补全

Visual Studio

如果你喜欢用Vsual Studio,则把上面的compile.bat,run.bat放到源码路径下后, 直接执行

cd "D:/carlos/install/PCL 1.14.0/share/doc/pcl-1.14/tutorials/sources/statistical_removal"
./compile.bat

这时候进入build,就会发现CMake帮你自动生成了vs的project,双击打开就可以了
在这里插入图片描述
并且会自动帮你配置好头文件目录,可以直接使用代码补全,以及源代码跳转
自动补全:
在这里插入图片描述
按住ctrl+左键即可源码跳转:
在这里插入图片描述
在这里插入图片描述

参考

文中已列出

主要做激光/影像三维重建,配准、分割等常用点云算法,熟悉open3d、pcl等开源点云库,技术交流、咨询可私信

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

诺有缸的高飞鸟

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

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

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

打赏作者

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

抵扣说明:

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

余额充值