///'#include //n#include <pcl/io/pcd_io.h>//n#include <pcl/point_types.h>//n#include <pcl/registration/icp.h>//n#include <pcl/visualization/pcl_visualizer.h>//n//nint main()//n{//n // 读取输入点云文件//n std::string source_filename = ///'D:/点云文件/雕像1.pcd///';//n std::string target_filename = ///'D:/点云文件/雕像2.pcd///';//n pcl::PointCloudpcl::PointXYZ::Ptr source_cloud(new pcl::PointCloudpcl::PointXYZ);//n pcl::PointCloudpcl::PointXYZ::Ptr target_cloud(new pcl::PointCloudpcl::PointXYZ);//n if (pcl::io::loadPCDFilepcl::PointXYZ(source_filename, *source_cloud) == -1 ||//n pcl::io::loadPCDFilepcl::PointXYZ(target_filename, *target_cloud) == -1)//n {//n PCL_ERROR(///'Error reading point cloud file!///');//n return -1;//n }//n//n // 执行SAC-IA粗配准//n pcl::IterativeClosestPoint<pcl::PointXYZ, pcl::PointXYZ> icp;//n icp.setInputSource(source_cloud);//n icp.setInputTarget(target_cloud);//n pcl::PointCloudpcl::PointXYZ aligned_cloud;//n icp.align(aligned_cloud);//n//n // 输出配准结果//n std::string output_filename = ///'D:/DIANYUNWENJIANJIA/icp.pcd///';//n pcl::io::savePCDFile(output_filename, aligned_cloud);//n//n // 可视化结果//n pcl::visualization::PCLVisualizer viewer(///'ICP Viewer///');//n viewer.addPointCloudpcl::PointXYZ(source_cloud, pcl::visualization::PointCloudColorHandlerCustompcl::PointXYZ(source_cloud, 255, 0, 0), ///'source_cloud///');//n viewer.addPointCloudpcl::PointXYZ(target_cloud, pcl::visualization::PointCloudColorHandlerCustompcl::PointXYZ(target_cloud, 0, 255, 0), ///'target_cloud///');//n viewer.addPointCloudpcl::PointXYZ(aligned_cloud.makeShared(), pcl::visualization::PointCloudColorHandlerCustompcl::PointXYZ(aligned_cloud.makeShared(), 0, 0, 255), ///'aligned_cloud///');//n viewer.spin();//n//n return 0;//n}//n///'使用 C++ 和 PCL 1.8.1 库实现 SAC-IA 粗配准算法,对两个雕像点云进行配准,并提供可视化结果。代码包含读取点云文件、执行配准、保存配准结果和可视化展示等步骤。请确保已正确安装 PCL 库,并在编译时链接相应的库文件。将代码粘贴到 C++ 源文件中,然后使用 C++ 编译器进行编译,生成可执行文件。运行可执行文件后,会得到配准结果,并在窗口中展示原始点云、目标点云和配准后的点云。最后,配准结果将保存在指定的输出文件中。///


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

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