vs2015+pcl1.8.0库实现点云背景的滤除

#include <pcl/io/pcd_io.h>
#include <pcl/io/ply_io.h>
#include <pcl/point_types.h>
#include <pcl/point_cloud.h>
#include <pcl/common/transforms.h>
#include <pcl/filters/passthrough.h>
#include<pcl/common/common.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <pcl/visualization/cloud_viewer.h>

typedef pcl::PointXYZRGB PointT; PointXYZ-->PointXYZRGB
typedef pcl::PointCloud<PointT> PointCloud;

// 旋转矩阵的具体定义 (请参考 https://en.wikipedia.org/wiki/Rotation_matrix)

int
main(int argc, char** argv)
{
//输入ply
    std::string src_cloud_path = "pointCloud_trunc_passthroughed_.ply";
    PointCloud::Ptr cloud_in(new PointCloud);
    pcl::io::loadPLYFile(src_cloud_path, *cloud_in);

pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud_filtered(new pcl::PointCloud<pcl::PointXYZRGB>); //PointXYZ-->PointXYZRGB

    //pcl::PointXYZ minPt, maxPt;
    //pcl::getMinMax3D(*cloud_in, minPt, maxPt);


    // 创建滤波器对象
    pcl::PassThrough<pcl::PointXYZRGB> pass; //设置滤波器对象 PointXYZ-->PointXYZRGB

    pass.setInputCloud(cloud_in);//设置输入点云
    pass.setFilterFieldName("z"); //设置过滤时所需要的点云类型的z字段
    //pass.setFilterLimits(minPt.z + 0.2, maxPt.z - 0.1); //设置在过滤字段上的范围
    pass.setFilterLimits(1000.0,1400.0);
    //pass.setFilterLimitsNegative(false); //设置保留范围内的还是过滤掉范围内的:算法内部默认false,即保留范围内的,滤掉范围外的;若设为true,则保留范围外的,滤掉范围内的;
    pass.filter(*cloud_filtered); //执行滤波

    //可视化单个点云
    pcl::visualization::PCLVisualizer viewer("registration Viewer");
    viewer.addPointCloud(cloud_filtered, "source cloud");

    //执行一个 while 循环,每次调用 spinOnce 都给视窗处理事件的时间,允许鼠标键盘等交互操作
    while (!viewer.wasStopped())
    {
        viewer.spinOnce(100);
        boost::this_thread::sleep(boost::posix_time::microseconds(10000));
    }

    //pcl::io::savePLYFileASCII("cartman_passthroughed_phase1.ply", *cloud_filtered); //将数据存储到磁盘
    pcl::io::savePLYFile("pointCloud_trunc_passthroughed_2.ply", *cloud_filtered);


    return (0);
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值