3d 可视化网格及其点云之间的区别

3d 可视化网格及其点云之间的区别,3d,mesh,point-cloud-library,3d,Mesh,Point Cloud Library,我正在使用PCL和网格编辑器(MeshLab)。我感兴趣的是将我的网格导入PCL以进行一些3D处理 我有一个ply格式的网格模型。当我用代码加载模型时: PointCloud<PointXYZRGBA>::Ptr cloud (new PointCloud<PointXYZRGBA> ()); pcl::io::loadPLYFile<pcl::PointXYZRGBA>(argv[1], *cloud); 几何体不同于直接加载和可视化网格: viewe

我正在使用PCL和网格编辑器(MeshLab)。我感兴趣的是将我的网格导入PCL以进行一些3D处理

我有一个ply格式的网格模型。当我用代码加载模型时:

PointCloud<PointXYZRGBA>::Ptr cloud (new PointCloud<PointXYZRGBA> ()); 
pcl::io::loadPLYFile<pcl::PointXYZRGBA>(argv[1], *cloud); 
几何体不同于直接加载和可视化网格:

viewer.addModelFromPLYFile(argv[1], "model"); 
在第二种情况下,我完全像使用网格编辑器一样可视化模型,但在第一种情况下,我可视化了它的变形版本,即球体与椭球相似。这里发生了什么?也许我应该手动采样网格

如果我在查看器中添加这两个模型,差异非常明显,点云比网格小,并且它遭受了一些奇怪的变形(请参见附图)

多谢各位



(来源:)

如果有人感兴趣,以下是答案:

PointCloud<PointXYZRGBA>::Ptr cloud (new PointCloud<PointXYZRGBA> ());
pcl::PolygonMesh triangles;
pcl::io::loadPolygonFilePLY(argv[1], triangles);
pcl::fromROSMsg(triangles.cloud, *cloud);
PointCloud::Ptr cloud(新的PointCloud());
多边形网格三角形;
pcl::io::LoadPolyConfigly(argv[1],三角形);
pcl::fromROSMsg(triangles.cloud,*cloud);

此代码打开一个PLY文件并将其转换为具有正确形状的点云。

我很确定这是1.7.2之前的PCL的一个缺陷,正如发行说明中所声明的,并由我自己的经验证明:

修复了PLYReader中的一个错误,该错误在CloudViewer或PCLVisualizer中显示时会导致点云变形

如果您不升级,请添加一行以修复错误,如下所示:

  if (pcl::io::loadPLYFile <pcl::PointXYZRGBNormal> (file, *cloud) == -1)
  {
    std::cout << "Cloud reading failed." << std::endl;
    return (-1);
  }
  cloud->sensor_orientation_.setIdentity();
if(pcl::io::loadPLYFile(文件,*cloud)=-1)
{
标准::cout
  if (pcl::io::loadPLYFile <pcl::PointXYZRGBNormal> (file, *cloud) == -1)
  {
    std::cout << "Cloud reading failed." << std::endl;
    return (-1);
  }
  cloud->sensor_orientation_.setIdentity();