使用StatisticalOutlierRemoval滤波器移除离群点,并用PCLVisulizer显示
2015-10-14 17:25
197 查看
#include <iostream> #include <pcl/io/pcd_io.h> #include <pcl/point_types.h> #include <pcl/io/io.h> #include <pcl/visualization/cloud_viewer.h> #include <boost/thread/thread.hpp> #include <pcl/filters/statistical_outlier_removal.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); std::cerr << "PointCloud before filtering: " << cloud->width * cloud->height << " data points (" << pcl::getFieldsList(*cloud) << ")."; // 创建滤波器对象 pcl::StatisticalOutlierRemoval<pcl::PointXYZI> sor; sor.setInputCloud(cloud); sor.setMeanK(50); sor.setStddevMulThresh(1.0); sor.filter(*cloud_filtered); std::cerr << "PointCloud after filtering: " << cloud_filtered->width * cloud_filtered->height << " data points (" << pcl::getFieldsList(*cloud_filtered) << ")."; pcl::visualization::PCLVisualizer viewer("PCLVisualizer"); viewer.initCameraParameters(); int v1(0); viewer.createViewPort(0.0, 0.0, 0.5, 0.5, v1); viewer.setBackgroundColor(1.0, 0.5, 1.0,v1); viewer.addText("Cloud before voxelgrid filtering", 10, 10,"v1 test", v1); pcl::visualization::PointCloudColorHandlerGenericField<pcl::PointXYZI> cloud_color(cloud, "intensity"); viewer.addPointCloud<pcl::PointXYZI>(cloud, cloud_color, "cloud", v1); int v2(0); viewer.createViewPort(0.5, 0.0, 1.0, 0.5, v2); viewer.setBackgroundColor(1.0, 0.5, 1.0,v2); viewer.addText("Cloud after voxelgrid filtering", 10, 10, "v2 test", v2); pcl::visualization::PointCloudColorHandlerGenericField<pcl::PointXYZI> cloud_afterfilter_color(cloud_filtered, "intensity"); viewer.addPointCloud<pcl::PointXYZI>(cloud_filtered, cloud_afterfilter_color, "cloud_filtered", v2); viewer.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 3, "cloud"); viewer.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 3, "cloud_filtered"); while (!viewer.wasStopped()) { //在此处可以添加其他处理 user_data++; viewer.spinOnce(100); boost::this_thread::sleep(boost::posix_time::microseconds(100000)); } return (0); }
相关文章推荐
- 你需要的是持续的服务改进
- Hbase 表设计
- iOS 每日一记之 -----点击验证码按钮 获取验证码
- Etl之HiveSql调优(设置map reduce 的数量)
- ecshop添加上传图片
- C++笔试题
- MYSQL使用inner join 进行 查询,删除,修改
- NOI库8756 砝码称重V2
- MFC颜色对话框使用
- NSURLSession/NSURLConnection HTTP load failed解决办法
- 1041_考试座位号
- Extjs进度条
- Chrome Developer Tools之网络监控与调优
- Fragment
- hibernate无法自动创建表的原因整理
- 问个spring自身框架中的log.info()怎么才能不往catalina.out写的问题
- linux内存释放
- ERROR 1044 (42000): Access denied for user ”@’localhost’ to database ‘mysql’
- superoj925 hello
- ubuntu 改换163源