在PCL中使用VoxelGrid滤波器对点云进行滤波
2015-10-14 09:29
381 查看
#include <iostream> #include <pcl/io/pcd_io.h> #include <pcl/point_types.h> #include <pcl/filters/voxel_grid.h> #include <pcl/io/io.h> #include <pcl/visualization/cloud_viewer.h> int user_data; void viewerOneOff(pcl::visualization::PCLVisualizer& viewer) { viewer.setBackgroundColor(1.0, 0.5, 1.0); pcl::PointXYZ o; o.x = 1.0; o.y = 0; o.z = 0; viewer.addSphere(o, 0.25, "sphere", 0); std::cout << "i only run once" << std::endl; } void viewerPsycho(pcl::visualization::PCLVisualizer& viewer) { static unsigned count = 0; std::stringstream ss; ss << "Once per viewer loop: " << count++; viewer.removeShape("text", 0); viewer.addText(ss.str(), 200, 300, "text", 0); //FIXME: possible race condition here: user_data++; } int main(int argc, char** argv) { pcl::PointCloud<pcl::PointXYZI>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZI>); pcl::PointCloud<pcl::PointXYZI>::Ptr cloud_filtered(new pcl::PointCloud<pcl::PointXYZI>); // 填入点云数据 pcl::io::loadPCDFile("table_scene_lms400.pcd", *cloud); // 创建滤波器对象 pcl::VoxelGrid<pcl::PointXYZI> sor; sor.setInputCloud(cloud); sor.setLeafSize(0.01f, 0.01f, 0.01f); sor.filter(*cloud_filtered); std::cerr << "PointCloud after filtering: " << cloud_filtered->width * cloud_filtered->height << " data points (" << pcl::getFieldsList(*cloud_filtered) << ")."; pcl::visualization::CloudViewer viewer("Cloud Viewer"); //showCloud函数是同步的,在此处等待直到渲染显示为止 viewer.showCloud(cloud_filtered); //该注册函数在可视化时只调用一次 viewer.runOnVisualizationThreadOnce(viewerOneOff); //该注册函数在渲染输出时每次都调用 viewer.runOnVisualizationThread(viewerPsycho); while (!viewer.wasStopped()) { //在此处可以添加其他处理 user_data++; } return (0); }
相关文章推荐
- 模仿搜狗浏览器加载小球
- 深入浅出Java三大框架SSH与MVC的设计模式
- Struts2:多文件上传
- iOS_8_键盘操作简单
- Java中的ReentrantLock和synchronized两种锁定机制的对比
- Python 文件 和 异常处理
- netstat
- 【投稿】iOS中旋转加载动画的实现
- CF584B Kolya and Tanya(数学计数,快速幂)
- CentOS7 设置终端快捷健
- 初次尝试用HTML/JS开发Android。
- [国嵌笔记][010][TFTP与NFS服务器配置]
- iOS9 beta 请求出现App Transport Security has blocked a cleartext HTTP (http://)
- Java基础知识强化之IO流笔记64:合并流SequenceInputStream
- hdu5040 优先队列+bfs
- android 路径规划
- 单表60亿记录等大数据场景的MySQL优化和运维之道 | 高可用架构
- .Net下一个Winform方案可以让MessageBox.Show它显示在父窗口的中间
- 卷积神经网络CNN
- 物料盘点流程图