PCL学习之----点云裁剪

该篇是读取一张点云数据后,按照Y轴的一半裁点云数据并显示

#include<iostream>
#include<pcl/io/ply_io.h>
#include<pcl/visualization/cloud_viewer.h>
#include <pcl/common/common.h>
#include <pcl/filters/passthrough.h>
#include <pcl/filters/crop_box.h>
int user_data;
using std::cout;
using namespace std;
int main() {

    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
    if (pcl::io::loadPLYFile<pcl::PointXYZ>("rabbit.ply", *cloud) == -1) {
        PCL_ERROR("Couldn't read file test_pcd.pcd \n");
        return (-1);
    }
   
   
	pcl::PointXYZ minValues;
	pcl::PointXYZ maxValues;
	pcl::getMinMax3D(*cloud, minValues, maxValues);//计算三个轴的最大最小值


	double yMax = maxValues.y;
	double yMin = minValues.y;
	double startvale= yMin;//设置切割的起始值
	double endtvale= yMin;//设置切割的终点值
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud1(new pcl::PointCloud<pcl::PointXYZ>);//切割后的点云数据
    
	pcl::PassThrough<pcl::PointXYZ> pass;//直通滤波
	pass.setInputCloud(cloud);
	pass.setFilterFieldName("y");    //选择y轴切割
	pass.setFilterLimits(startvale, endvale);   //切片范围
	pass.filter(*cloud1);
	cout << cloud->points.size() << endl;
	cout << cloud1->points.size() << endl;
	pcl::visualization::PCLVisualizer viewer("display1");
	viewer.setBackgroundColor(0, 0, 0);//设置背景颜色
	pcl::visualization::PointCloudColorHandlerGenericField<pcl::PointXYZ> fildColor(cloud, "z");//按照z字段进行渲染
	viewer.addPointCloud<pcl::PointXYZ>(cloud, fildColor, "sample");
    pcl::visualization::PCLVisualizer viewer1("display2");
    pcl::visualization::PointCloudColorHandlerGenericField<pcl::PointXYZ> fildColor1(cloud1, "z");
    viewer1.addPointCloud<pcl::PointXYZ>(cloud1, fildColor1, "sample2");
    viewer1.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 3, "sample2");
	while (!viewer.wasStopped()||!viewer1.wasStopped())
	{
       viewer1.spinOnce();
	   viewer.spinOnce();
	}
	system("pause");
	return 0;

运行结果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值