点云库PCL学习笔记 -- 点云滤波Filtering -- 1.直通滤波器
2022/3/19 23:38:20
本文主要是介绍点云库PCL学习笔记 -- 点云滤波Filtering -- 1.直通滤波器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
点云库PCL学习笔记 -- 点云滤波Filtering -- 1.直通滤波器
- 1. 直通滤波器代码
- 2. 编译文件
- 3. 测试
1. 直通滤波器代码
直通滤波器代码passthrough.cpp
#include <iostream> #include <pcl/point_types.h> #include <pcl/filters/passthrough.h> int main (int argc, char** argv) { //定义并实例化一个PointCloud指针对象,并用随机点集赋值给它 pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>); pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filtered (new pcl::PointCloud<pcl::PointXYZ>); //填充点云数据 cloud->width = 5; cloud->height = 1; cloud->points.resize (cloud->width * cloud->height); for (size_t i = 0; i < cloud->points.size (); ++i) { point.x = 1024 * rand () / (RAND_MAX + 1.0f); point.y = 1024 * rand () / (RAND_MAX + 1.0f); point.z = 1024 * rand () / (RAND_MAX + 1.0f); } //打印随机生成的点云数据 std::cerr << "Cloud before filtering: " << std::endl; for ((size_t i = 0; i < cloud->points.size (); ++i) std::cerr << " " << point.x << " " << point.y << " " << point.z << std::endl; //创建过滤对象 pcl::PassThrough<pcl::PointXYZ> pass; //设置滤波器对象 pass.setInputCloud (cloud); //设置输入点云 pass.setFilterFieldName ("z"); //设置过滤时所需要点云类型的z字段 pass.setFilterLimits (0.0, 1.0); //设置过滤字段上的范围,范围大小为(0.0 ~ 1.0) //pass.setFilterLimitsNegative (true); //设置保留范围内的还是过滤掉范围内的,true为保留 pass.filter (*cloud_filtered); //执行滤波,保存过滤结果在 cloud_filtered //打印出过滤结果相关数据 std::cerr << "Cloud after filtering: " << std::endl; for (size_t i = 0; i < cloud_filtered->points.size (); ++i) std::cerr << " " << point.x << " " << point.y << " " << point.z << std::endl; return (0); }
2. 编译文件
设置编译文件CMakeLists.txt
cmake_minimum_required(VERSION 2.8 FATAL_ERROR) project(passthrough) find_package(PCL 1.2 REQUIRED) include_directories(${PCL_INCLUDE_DIRS}) link_directories(${PCL_LIBRARY_DIRS}) add_definitions(${PCL_DEFINITIONS}) add_executable (passthrough passthrough.cpp) target_link_libraries (passthrough ${PCL_LIBRARIES})
编译
mkdir build cd build/ cmake .. make
3. 测试
执行程序
cd .. ./build/passthrough
结果如下:
从结果可以看出,滤波后的点云Z轴
上的数据在(0.0~1.0)
的数据范围内
这篇关于点云库PCL学习笔记 -- 点云滤波Filtering -- 1.直通滤波器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享