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…

关于django makemigrations/migrate在生成数据表上遇到的一些问题

当你删除了生成的 migration 文件夹&#xff0c;将数据库从 SQLite 切换到 MySQL&#xff0c;并且在执行 makemigrations 命令时显示没有变化&#xff0c;同时 MySQL 中没有生成表&#xff0c;可能是由于以下原因造成的&#xff1a; Django迁移系统的工作方式&#xff1a;Djang…

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

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

软考 系统分析师系列知识点之详细调查(3)

接前一篇文章&#xff1a;软考 系统分析师系列知识点之详细调查&#xff08;2&#xff09; 所属章节&#xff1a; 第10章. 系统分析 第2节. 详细调查 在系统规划阶段&#xff0c;通过初步调查&#xff0c;系统分析师已经对企业的组织结构、系统功能等有了大致的了解。但是&…

力扣203移除链表元素

题目&#xff1a; 203. 移除链表元素 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 1&#xff0c;设置一个头节点&#xff0c;统一操作。 2&#xff0c;这里是用p查找&#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

在Linux上使用通用二进制包安装MySQL

下载安装包 MySQL Community Downloads 安装依赖 mysql 数据目录初始化及服务启动阶段依赖libaio&#xff0c;检测是否已安装libaio dnf install libaio解压安装 ## 创建用户组 groupadd mysql ## 创建用户 useradd -r -g mysql -s /bin/false mysql ## 解压安装包 tar xv…

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

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

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

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

电商数据分析13——电商平台退货率分析与降低策略

目录 写在开头1. 退货率分析的重要性1.1 退货现象的影响1.2 退货数据的收集与分析 2. 数据分析揭示的主要退货原因2.1 产品描述不准确2.2 物流配送问题2.3 产品质量问题 3. 基于数据分析的退货率降低策略3.1 优化产品描述和图片3.2 改进物流配送服务3.3 加强质量控制和售后服务…

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

在日常工作中&#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[宽*高]的颜色…

CCS ‘23 论文清单与摘要

网络安全学术顶会——CCS 23 论文清单与摘要 1、“Get in Researchers; We’re Measuring Reproducibility”: A Reproducibility Study of Machine Learning Papers in Tier 1 Security Conferences 可复现性对科学的进展至关重要&#xff1b;它增强了对看似矛盾结果的信心&…

企微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;理想汽车研发…

24计算机考研调剂 | 北京联合大学

北京联合大学自动驾驶方向招生调剂 考研调剂招生信息 学校:北京联合大学 专业:工学->电子信息->计算机应用技术 工学->计算机科学与技术 年级:2024 招生人数:10 招生状态:正在招生中 联系方式:********* (为保护个人隐私,联系方式仅限APP查看) 补充内容 研究…