我现在想得到点云的曲率图。我用pcl::PrincipalCurvaturesEstimation<pcl::PointXYZ,pcl::Normal,pcl::PrincipalCurvatures>这个类计算点云的曲率后,然后再用pcl::visualization::PCLVisualizer中的函数addPointCloudPrincipalCurvatures可视化。但是程序运行之后,窗口里面什么也没有。这是我的程序:
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ> ());
pcl::io::loadPCDFile ("shou-mls.pcd", *cloud);
pcl::search::KdTree<pcl::PointXYZ>::Ptr tree (new pcl::search::KdTree<pcl::PointXYZ>);
pcl::NormalEstimation<pcl::PointXYZ,pcl::Normal> normal_estimation;
pcl::PointCloud<pcl::Normal>::Ptr cloud_with_normal (new pcl::PointCloud<pcl::Normal>);
normal_estimation.setInputCloud(cloud);
normal_estimation.setSearchMethod(tree);
normal_estimation.setRadiusSearch(3.0);
normal_estimation.compute(*cloud_with_normal);
pcl::PrincipalCurvaturesEstimation<pcl::PointXYZ,pcl::Normal,pcl::PrincipalCurvatures> principal_curvatures_estimation;
principal_curvatures_estimation.setInputCloud(cloud);
principal_curvatures_estimation.setInputNormals(cloud_with_normal);
principal_curvatures_estimation.setSearchMethod(tree);
principal_curvatures_estimation.setRadiusSearch(3.0);
pcl::PointCloud<pcl::PrincipalCurvatures>::Ptr principal_curvatures ( new pcl::PointCloud<pcl::PrincipalCurvatures>());
principal_curvatures_estimation.compute(*principal_curvatures);
pcl::visualization::PCLVisualizer viewer;
viewer.setBackgroundColor(0.0,0.0,0.0);
viewer.addPointCloudPrincipalCurvatures(cloud,cloud_with_normal,principal_curvatures,100,1.0f,"cloud",0);
是我的程序有问题吗?我要怎么做才能得到下面那样的曲率图呢? 先谢谢了!!!
我想要的曲率图:
|