4

PCL とメッシュ エディター (MeshLab) を使用しています。メッシュを PCL にインポートして 3D 処理を行うことに興味があります。

プライ形式のメッシュ モデルがあります。モデルをコードでロードすると:

PointCloud<PointXYZRGBA>::Ptr cloud (new PointCloud<PointXYZRGBA> ()); 
pcl::io::loadPLYFile<pcl::PointXYZRGBA>(argv[1], *cloud); 

それを点群として視覚化します。

visualization::PCLVisualizer viewer ("Model"); 
viewer.addPointCloud (cloud,"model"); 

ジオメトリは、メッシュを直接読み込んで視覚化するのとは異なります。

viewer.addModelFromPLYFile(argv[1], "model"); 

2 番目のケースでは、メッシュ エディタで行うのとまったく同じようにモデルを視覚化しますが、最初のケースでは変形バージョンを視覚化します。つまり、球は楕円体に似ています。ここで何が起きてるの?たぶん、手動でメッシュをサンプリングする必要がありますか?

ビューアーに 2 つのモデルを追加すると、違いがはっきりとわかります。ポイント クラウドはメッシュよりも小さく、奇妙な変形が生じています (添付の画像を参照してください)。

どうもありがとうございました

プライ
(出典: pcl-users.org )

4

2 に答える 2

5

誰かが興味を持っているなら、ここに答えがあります:

PointCloud<PointXYZRGBA>::Ptr cloud (new PointCloud<PointXYZRGBA> ());
pcl::PolygonMesh triangles;
pcl::io::loadPolygonFilePLY(argv[1], triangles);
pcl::fromROSMsg(triangles.cloud, *cloud);

このコードは、PLY ファイルを開き、正しい形状の点群に変換します。

于 2013-07-08T13:54:04.177 に答える
1

1.7.2 より前の PCL のバグであると確信しており、リリース ノートで免責されており、私自身の経験から証明されています。

CloudViewer または PCLVisualizer で表示すると点群が変形する PLYReader のバグを修正しました#879

アップグレードしない場合は、次のように 1 行追加してバグを修正してください。

  if (pcl::io::loadPLYFile <pcl::PointXYZRGBNormal> (file, *cloud) == -1)
  {
    std::cout << "Cloud reading failed." << std::endl;
    return (-1);
  }
  cloud->sensor_orientation_.setIdentity();
于 2014-11-14T13:40:46.713 に答える