11

PCL CloudViewerを使用して点群を視覚化しようとしています。問題は、私が C++ にまったく慣れていないことです。最初に PointCloud の作成を示し、次に PointCloud の視覚化を示す2つのチュートリアルを見つけました。ただし、これら 2 つのチュートリアルを組み合わせることができません。

これが私が思いついたものです:

#include <iostream>

#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/visualization/cloud_viewer.h>

int main (int argc, char** argv)
{
  pcl::PointCloud<pcl::PointXYZ> cloud;
  
  // Fill in the cloud data
  cloud.width    = 5;
  cloud.height   = 1;
  cloud.is_dense = false;
  cloud.points.resize (cloud.width * cloud.height);

  for (size_t i = 0; i < cloud.points.size (); ++i)
  {
    cloud.points[i].x = 1024 * rand () / (RAND_MAX + 1.0f);
    cloud.points[i].y = 1024 * rand () / (RAND_MAX + 1.0f);
    cloud.points[i].z = 1024 * rand () / (RAND_MAX + 1.0f);
  }

  pcl::visualization::CloudViewer viewer ("Simple Cloud Viewer");
  viewer.showCloud (cloud);

  while (!viewer.wasStopped ())
  {
  }

  return (0);
}

しかし、それもコンパイルされません:

error: no matching function for call to   
‘pcl::visualization::CloudViewer::showCloud(pcl::PointCloud<pcl::PointXYZ>&)’
4

4 に答える 4

10

エラーメッセージは、何をする必要があるかを示しています。

error: no matching function for call to ‘pcl::visualization::CloudViewer::showCloud(pcl::PointCloud<pcl::PointXYZ>&)’

CloudViewer のドキュメントにアクセスして、このメンバー関数が取る引数を確認してください: http://docs.pointclouds.org/1.5.1/classpcl_1_1visualization_1_1_cloud_viewer.html

これconst MonochromeCloud::ConstPtr &cloudは、ブーストからのスマート ポインターの typedef です。

typedef boost::shared_ptr<const PointCloud<PointT> > pcl::PointCloud< PointT >::ConstPtr

したがって、クラウドを作成するときは、ローカル変数にするのではなく、これらのスマート ポインターのいずれかでラップする必要があります。(未テスト) のようなもの:

pcl::MonochromeCloud::ConstPtr cloud(new pcl::PointCloud<pcl::PointXYZ>());

次に、変数クラウドを渡すと、正しい型になり、報告したエラーは発生しません。cloud.fooまた、 s をsに変更する必要がありますcloud->foo

あなたが与える2番目の例を見ると、彼らもこれを行います:

pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZRGBA>);
于 2012-04-11T13:27:52.433 に答える
9

すぐに答えを出すには:

pcl::PointCloud<pcl::PointXYZRGB>::Ptr ptrCloud(&cloud);

次に、ビューアーに ptrCloud を配置します。これは期待どおりです。

viewer.showCloud (ptrCloud);
于 2014-02-01T23:25:42.247 に答える