|
我用PrincipalCurvaturesEstimation计算了曲率,代码是官方的代码,然后想知道pcl::PrincipalCurvatures这个数据结构中到底哪个成员才是点的曲率?
代码:
#include <iostream>
#include <vector>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/features/normal_3d.h>
#include <pcl/features/principal_curvatures.h>
#include <pcl/PolygonMesh.h>
#include <pcl/io/ply_io.h>
using namespace std;
int main ()
{
/*
pcl::PCLPointCloud2 cloud1;
pcl::io::loadPLYFile("L10.ply",cloud1);
pcl::io::savePCDFile("L10.pcd",cloud1);
*/
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);
if (pcl::io::loadPCDFile<pcl::PointXYZ> ("L10.pcd", *cloud) == -1) //* load the file
{
PCL_ERROR ("Couldn't read file");
return (-1);
}
std::cout << "Loaded " << cloud->points.size () << " points." << std::endl;
// Compute the normals
pcl::NormalEstimation<pcl::PointXYZ, pcl::Normal> normal_estimation;
normal_estimation.setInputCloud (cloud);
pcl::search::KdTree<pcl::PointXYZ>::Ptr tree (new pcl::search::KdTree<pcl::PointXYZ>);
normal_estimation.setSearchMethod (tree);
pcl::PointCloud<pcl::Normal>::Ptr cloud_with_normals (new pcl::PointCloud<pcl::Normal>);
normal_estimation.setRadiusSearch (3);//0.03
normal_estimation.compute (*cloud_with_normals);
// Setup the principal curvatures computation
pcl::PrincipalCurvaturesEstimation<pcl::PointXYZ, pcl::Normal, pcl::PrincipalCurvatures> principal_curvatures_estimation;
// Provide the original point cloud (without normals)
principal_curvatures_estimation.setInputCloud (cloud);
// Provide the point cloud with normals
principal_curvatures_estimation.setInputNormals (cloud_with_normals);
// Use the same KdTree from the normal estimation
principal_curvatures_estimation.setSearchMethod (tree);
principal_curvatures_estimation.setRadiusSearch (3.0);
// Actually compute the principal curvatures
pcl::PointCloud<pcl::PrincipalCurvatures>::Ptr principal_curvatures (new pcl::PointCloud<pcl::PrincipalCurvatures> ());
principal_curvatures_estimation.compute (*principal_curvatures);
std::cout << "output points.size (): " << principal_curvatures->points.size () << std::endl;
// Display and retrieve the shape context descriptor vector for the 0th point.
pcl::PrincipalCurvatures descriptor = principal_curvatures->points[0];
std::cout << descriptor << std::endl;
cin.get();
return 0;
}
|
|