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
  • 使用
    • 准备测试demo源码和文件
    • 添加可视化源码
    • 编译运行
  • 参考

安装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
把下载的测试数据放到该目录下
在这里插入图片描述
然后命令行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 datapcl::PCDReader reader;// Replace the path below with the path where you saved your filereader.read<pcl::PointXYZ>("table_scene_lms400.pcd", *cloud);std::cerr << "Cloud before filtering: " << std::endl;std::cerr << *cloud << std::endl;// Create the filtering objectpcl::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 ./buildcmake --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脚本

在这里插入图片描述
结果
滤波前
在这里插入图片描述
滤波后

在这里插入图片描述

参考

文中已列出

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

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

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

相关文章

http和https的区别是什么?

–前言 传输信息安全性不同、连接方式不同、端口不同、证书申请方式不同 一、传输信息安全性不同 1、http协议&#xff1a;是超文本传输协议&#xff0c;信息是明文传输。如果攻击者截取了Web浏览器和网站服务器之间的传输报文&#xff0c;就可以直接读懂其中的信息。 2、h…

排序(3)——直接选择排序

目录 直接选择排序 基本思想 整体思路&#xff08;升序&#xff09; 单趟 多趟 代码实现 特性总结 直接选择排序 基本思想 每一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个元素&#xff0c;存放在序列的起始位置&#xff0c;直到全部待排序的…

BUUCTF---数据包中的线索1

1.题目描述 2.下载附件&#xff0c;是一个.pcap文件 3.放在wireshark中&#xff0c;仔细观察数据流&#xff0c;会发现有个叫fenxi.php的数据流 4.这条数据流是http,且使用GET方式&#xff0c;接下来我们使用http.request,methodGET 命令来过滤数据流 5.在分析栏中我们追踪htt…

查看端口占用命令

fuser 8080/tcp netstat -tuln | grep 8080 lsof -i:8080 ss -tuln | grep 8080

数据挖掘:航空公司的客户价值分析

需求分析 理解并掌握聚类分析方法&#xff0c;掌握数据的标准化&#xff0c;掌握寻找最佳聚类数&#xff0c;掌握聚类的绘图&#xff0c;掌握聚类分析的应用场景。 系统实现 实验流程分析 借助航空公司数据&#xff0c;对客户进行分类对不同类别的客户进行特征分析&#xf…

IEEE754标准的c语言阐述,以及几个浮点数常量

很多年前&#xff0c;调研过浮点数与整数之间的双射问题&#xff1a; win7 intel x64 cpu vs2013 c语言浮点数精度失真问题 最近重新学习了一下IEEE754标准&#xff0c;也许实际还有很多深刻问题没有被揭示。 计算机程序设计艺术&#xff0c;据说这本书中也有讨论。 参考&…

抖音视频批量采集软件|视频评论下载工具

在日常工作中&#xff0c;需要频繁下载抖音视频&#xff0c;但逐个复制分享链接下载效率太低&#xff1f;别担心&#xff01;我们推出了一款专业的抖音视频批量采集软件&#xff0c;基于C#开发&#xff0c;满足您的需求&#xff0c;让您通过关键词搜索视频并自动批量抓取&#…

力扣每日一题 受限条件下可到达节点的数目 DFS

Problem: 2368. 受限条件下可到达节点的数目 文章目录 思路复杂度Code 思路 &#x1f468;‍&#x1f3eb; 灵神 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( n ) O(n) O(n) Code class Solution {int ans 0;boolean[] set;List<Integer>[] es;publ…

Unity中URP下实现水体(C#动态生成渐变图)

文章目录 前言一、Shader部分1、申明水渐变图纹理和采样器2、在片元着色器&#xff0c;进行纹理采样&#xff0c;并且输出 二、C#脚本部分1、我们新建一个C#脚本2、我们定义两个变量3、在Start内&#xff0c;new 一个Texture2D(宽&#xff0c;高)4、定义一个Color[宽*高]的颜色…

企微hook源码第二弹

免费的企微框架&#xff0c;可下载测试。 支持文本消息&#xff0c;图片消息&#xff0c;视频消息&#xff0c;文件消息。 有兴趣可以进群交流。649480745&#xff0c;群内不定期开源企微hook源码 接下来就是第二弹的企微hook源码。后续会在群内开源完整源码。

diskMirror-backEnd-spring-boot | diskMirror 后端服务器 SpringBoot 版本!

diskMirror-backEnd-spring-boot 开源技术栏 diskMirror 后端服务器 SpringBoot 版本! 此版本中拓展了 DiskMirrorBackEnd&#xff0c;是一个完全的SpringBoot项目&#xff01; 目录 diskMirror-backEnd-spring-boot 目录我如何使用&#xff1f; 部署与配置我如何使用其中的…

Java+SpringBoot+Vue:志愿服务的数字化之旅

✍✍计算机毕业编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java、…

理想汽车狂飙18%,造车新势力洗牌

2月27日&#xff0c;#理想汽车狂飙18%#话题冲上热搜&#xff1b;前一日&#xff0c;理想汽车(02015.HK)公布了2023年第四季度及全年财报。尽管其营收净利双增长&#xff0c;但业绩增长背后仍有隐忧。 「不二研究」据其2023年报发现&#xff1a;2023年&#xff0c;理想汽车研发…

【办公类-25-01】20240302 UIBOT上传 ”班级主页-育儿知识(家园小报)“

作品展示&#xff1a; 一、背景需求&#xff1a; 本学期制作了 “育儿知识&#xff08;家园小报&#xff09;”合并A4内容 【办公类-22-08】周计划系列&#xff08;4&#xff09;“育儿知识&#xff08;家园小报&#xff09;“ &#xff08;2024年调整版本&#xff09;-CSDN博…

【论文阅读】Usenix Security 2023 你看不见我:对基于激光雷达的自动驾驶汽车驾驶框架的物理移除攻击

文章目录 一.论文信息二.论文内容1.摘要2.引言3.作者贡献4.主要图表5.结论 一.论文信息 论文题目&#xff1a; You Can’t See Me: Physical Removal Attacks on LiDAR-based Autonomous Vehicles Driving Frameworks&#xff08;你看不见我:对基于激光雷达的自动驾驶汽车驾驶…

HCIA-HarmonyOS设备开发V2.0证书

目录 一、不墨迹&#xff0c;上证书二、考试总结三、习题四、知识点五、坚持就有收获 HCIA-HarmonyOS Device Developer V2.0 开发者能力认证考试已通过。 一、不墨迹&#xff0c;上证书 一个多月的努力&#xff0c;验证了自己的学习成果&#xff0c;也认识到自己有待提升之处…

微软AI文生图新突破,用于图像生成的多LoRA组合训练模型Multi-LoRA-Composition

微软近期在文本至图像生成领域取得了一项重要突破&#xff0c;通过引入多重低秩适应&#xff08;LoRA&#xff09;技术&#xff0c;成功地创造出了高度个性化和细节丰富的图像。这一研究不仅为我们带来了全新的图像生成方法&#xff0c;还为我们提供了一种基于GPT-4V的图像质量…

switch开关语句

定义 单条件多分支的开关语句。 格式定义 switch(表达式) { case 常量值1: 若干个语句 break; ... case 常量值n: 若干个语句 break; default: 若干语句 } ★注意★&#xff1a; ① 表达式的值必须与int兼容类型&#xff1a; byte&#xff0c;short&#xff0c;int&#xff…

串及BF朴素查找算法(学习整理):

关于串的相关定义&#xff1a; 串&#xff1a;用‘ ’表示的字符序列空串&#xff1a;包含零个字符的串子串&#xff1a;包含传本身和空串的子串 eg: abc(,a,b,c,ab,bc,ac,abc)共7个&#xff1a;串的长度的阶乘1&#xff08;空串&#xff09;真子串&#xff1a;不包含自身的所…

解读OWASP应用安全验证标准ASVS

OWASP应用程序安全验证标准&#xff08;OWASP Application Security Verification Standard&#xff0c;ASVS&#xff09;为测试web应用程序技术安全控制提供了基础&#xff0c;还为开发人员提供了安全开发的要求列表。 1. 简介 OWASP应用安全验证标准&#xff0c;是一份测试应…