PCL 生成带随机噪声的圆环点云
#include <pcl/point_types.h>
#include <pcl/io/pcd_io.h>
#include <pcl/filters/passthrough.h>
#include <pcl/filters/voxel_grid.h>
#include <pcl/features/normal_3d.h>
#include <pcl/kdtree/kdtree_flann.h>
#include <pcl/sample_consensus/method_types.h>
#include <pcl/sample_consensus/model_types.h>
#include <pcl/segmentation/sac_segmentation.h>
#include <pcl/surface/concave_hull.h>
#include <pcl/surface/mls.h>
#include <pcl/visualization/cloud_viewer.h>
#include
int main ()
{
srand(static_cast
// Generate outer ring point cloud pcl::PointCloudpcl::PointXYZ::Ptr cloud_ring(new pcl::PointCloudpcl::PointXYZ); for (float angle = 0; angle <= 360; angle += 0.1) { pcl::PointXYZ point; point.x = 100cos(angleM_PI/180); point.y = 100sin(angleM_PI/180); point.z = 0; cloud_ring->points.push_back(point); }
// Generate inner ring point cloud pcl::PointCloudpcl::PointXYZ::Ptr cloud_hole(new pcl::PointCloudpcl::PointXYZ); for (float angle = 0; angle <= 360; angle += 0.1) { pcl::PointXYZ point; point.x = 80cos(angleM_PI/180); point.y = 80sin(angleM_PI/180); point.z = 0; cloud_hole->points.push_back(point); }
// Combine point clouds pcl::PointCloudpcl::PointXYZ::Ptr cloud(new pcl::PointCloudpcl::PointXYZ); *cloud = *cloud_ring; *cloud += *cloud_hole;
// Add random noise
for (int i = 0; i < cloud->size(); ++i)
{
float noise_x = static_cast
// Visualize point cloud pcl::visualization::CloudViewer viewer('PointCloud Viewer'); viewer.showCloud(cloud);
while (!viewer.wasStopped()) { }
return 0; }
该代码首先生成了外半径为 100,内半径为 80 的圆环的点云,然后生成了内部随机点云,最后将两个点云合并并可视化。可以根据需要调整噪声的程度。
原文地址: https://www.cveoy.top/t/topic/nzOK 著作权归作者所有。请勿转载和采集!