PCL 点云数据拟合垂直于YZ平面的红色中心线
#include\x20
int\x20main() { \x20\x20//\x20读取点云数据 \x20\x20pcl::PointCloudpcl::PointXYZ::Ptr\x20cloud(new\x20pcl::PointCloudpcl::PointXYZ); \x20\x20pcl::PLYReader\x20reader; \x20\x20reader.read("D:\DIANYUNWENJIANJIA\newkruskal2_ply.ply",\x20*cloud);
\x20\x20//\x20创建霍夫变换对象 \x20\x20pcl::ModelCoefficients::Ptr\x20coefficients(new\x20pcl::ModelCoefficients); \x20\x20pcl::PointIndices::Ptr\x20inliers(new\x20pcl::PointIndices); \x20\x20pcl::SACSegmentationpcl::PointXYZ\x20seg; \x20\x20seg.setOptimizeCoefficients(true); \x20\x20seg.setModelType(pcl::SACMODEL_LINE); \x20\x20seg.setMethodType(pcl::SAC_RANSAC); \x20\x20seg.setMaxIterations(1000); \x20\x20seg.setDistanceThreshold(0.04);
\x20\x20//\x20设置垂直于yz平面的法线方向 \x20\x20Eigen::Vector3f\x20axis; \x20\x20axis\x20<<\x201,\x200,\x200; \x20\x20seg.setAxis(axis);
\x20\x20//\x20执行霍夫变换 \x20\x20seg.setInputCloud(cloud); \x20\x20seg.segment(inliers,\x20coefficients);
\x20\x20//\x20提取直线内点 \x20\x20pcl::ExtractIndicespcl::PointXYZ\x20extract; \x20\x20extract.setInputCloud(cloud); \x20\x20extract.setIndices(inliers); \x20\x20extract.setNegative(false); \x20\x20pcl::PointCloudpcl::PointXYZ::Ptr\x20line(new\x20pcl::PointCloudpcl::PointXYZ); \x20\x20extract.filter(*line);
\x20\x20//\x20可视化结果 \x20\x20pcl::visualization::PCLVisualizer\x20viewer("3D\x20Viewer"); \x20\x20viewer.setBackgroundColor(0,\x200,\x200); \x20\x20viewer.addPointCloudpcl::PointXYZ(cloud,\x20"cloud"); \x20\x20viewer.addPointCloudpcl::PointXYZ(line,\x20"line"); \x20\x20viewer.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE,\x201,\x20"cloud"); \x20\x20viewer.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_COLOR,\x201,\x200,\x200,\x20"line");\x20//\x20设置颜色为红色 \x20\x20viewer.addCoordinateSystem(1.0); \x20\x20viewer.initCameraParameters(); \x20\x20viewer.spin();
\x20\x20//\x20保存结果 \x20\x20pcl::PLYWriter\x20writer; \x20\x20writer.write("D:\DIANYUNWENJIANJIA\拟合中心线_ply.ply",\x20*line);
\x20\x20return\x200;
原文地址: https://www.cveoy.top/t/topic/p1h0 著作权归作者所有。请勿转载和采集!