#include <pcl/ModelCoefficients.h>
#include <pcl/io/pcd_io.h>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/filters/extract_indices.h>
#include <pcl/filters/passthrough.h>
#include <pcl/features/normal_3d.h>
#include <pcl/sample_consensus/method_types.h>
#include <pcl/sample_consensus/model_types.h>
#include <pcl/segmentation/sac_segmentation.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <pcl/common/centroid.h>
#include <pcl/common/transforms.h>
#include <pcl/common/common.h>
#include <iostream>
#include <pcl/visualization/cloud_viewer.h>
#include<string>
#include<math.h>
int slice2(std::string inputPCDName,std::vector<pcl::PointCloud<pcl::PointXYZ> > &slicePointsAssemble,double sliceInterval){
//boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer (new pcl::visualization::PCLVisualizer ("3D Viewer"));
// viewer->setBackgroundColor (0, 0, 0);
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
pcl::io::loadPCDFile(inputPCDName, *cloud);
pcl::PointXYZ minValues;//用于存放三个轴的最小值
pcl::PointXYZ maxValues;//用于存放三个轴的最大值
pcl::getMinMax3D(*cloud,minValues,maxValues);
double zMax=maxValues.z;
double zMin=minValues.z;
int sliceNum=floor((zMax-zMin)/sliceInterval)-1;
std::cout<<"slice number: "<<sliceNum<<endl;
double sliceBeginCoordinate=zMin+(zMax-zMin-sliceNum*sliceInterval)/2+sliceInterval/2;
std::cout<<"slice Begin Coordinate: "<<sliceBeginCoordinate<<endl;
std::cout<<"slice End Coordinate: "<<sliceBeginCoordinate+sliceNum*sliceInterval<<endl;
int sliceNumCount=0;
//for(float base=sliceBeginCoordinate;base<=sliceBeginCoordinate+sliceNum*sliceInterval;base=base+sliceInterval){
for(float base=-900;base<=100;base=base+100){
int label=3;
float d=sliceInterval;
float bs=base;
float radius_min=10;
float radius_max=400;
/*
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);
cloud->width = 100; //此处点云数量
cloud->height = 1; //表示点云为无序点云
cloud->points.resize (cloud->width * cloud->height);
for(int i=0;i<=10;i=i+2){
cloud->points[i].x=0;
clou
PCL点云切片算法程序
最新推荐文章于 2024-07-02 13:47:52 发布
本文详细探讨了PCL库中的点云切片算法,通过C++实现,结合拓扑学原理,讲解了如何对三维点云进行二维截取,包括设置切片厚度、方向和位置等关键步骤,旨在帮助读者理解并应用该算法。
摘要由CSDN通过智能技术生成