#include \n#include <pcl/io/ply_io.h>\n#include <pcl/point_types.h>\n#include <pcl/visualization/pcl_visualizer.h>\n#include <pcl/sample_consensus/ransac.h>\n#include <pcl/sample_consensus/sac_model_line.h>\n\nint main()\n{\n // 读取点云数据\n pcl::PointCloudpcl::PointXYZ::Ptr cloud(new pcl::PointCloudpcl::PointXYZ);\n if (pcl::io::loadPLYFilepcl::PointXYZ("D:\DIANYUNWENJIANJIA\newkruskal2_ply.ply", *cloud) == -1)\n {\n PCL_ERROR("Couldn't read file\n");\n return -1;\n }\n\n // 创建RANSAC对象\n pcl::SampleConsensusModelLinepcl::PointXYZ::Ptr model(new pcl::SampleConsensusModelLinepcl::PointXYZ(cloud));\n pcl::RandomSampleConsensuspcl::PointXYZ ransac(model);\n ransac.setDistanceThreshold(0.01); // 设置距离阈值,用于判断点是否属于直线模型\n\n // 执行RANSAC拟合直线\n pcl::PointCloudpcl::PointXYZ::Ptr inliers(new pcl::PointCloudpcl::PointXYZ);\n ransac.computeModel();\n ransac.getInliers(inliers->indices);\n\n // 设置拟合的直线颜色为红色\n pcl::visualization::PCLVisualizer viewer("RANSAC Line Fitting");\n pcl::visualization::PointCloudColorHandlerCustompcl::PointXYZ red_color(inliers, 255, 0, 0);\n viewer.addPointCloudpcl::PointXYZ(inliers, red_color, "inliers");\n\n // 可视化点云和拟合的直线\n viewer.addPointCloudpcl::PointXYZ(cloud, "cloud");\n while (!viewer.wasStopped())\n {\n viewer.spinOnce();\n }\n\n // 保存拟合结果\n pcl::io::savePLYFile("D:\DIANYUNWENJIANJIA\ransac拟合直线_ply.ply", *inliers);\n\n return 0;\n}

C++ PCL 1.8.1 RANSAC 直线拟合:代码示例和可视化

原文地址: https://www.cveoy.top/t/topic/p1dH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录