Meshlab で表示した Visual Structure from Motion を使用して、バイナリ ポイント クラウド (PLY) を生成しました。点群は、面を持たない点のみです。これらのファイルを PCL にロードしてセグメンテーションを行いたいのですが、ファイルを正しく読み取ることができません。コード (loadPLYFile を使用) は実行されますが、インデックスを生成できません。
pcl::search::Search <pcl::PointXYZRGB>::Ptr tree = boost::shared_ptr<pcl::search::Search<pcl::PointXYZRGB> > (new pcl::search::KdTree<pcl::PointXYZRGB>);
pcl::PointCloud <pcl::PointXYZRGB>::Ptr cloud (new pcl::PointCloud <pcl::PointXYZRGB>);
if ( pcl::io::loadPLYFile <pcl::PointXYZRGB> ("file.ply", *cloud) == -1 )
{
std::cout << "Cloud reading failed." << std::endl;
return (-1);
}
pcl::IndicesPtr indices (new std::vector <int>);
pcl::PassThrough<pcl::PointXYZRGB> pass;
pass.setInputCloud (cloud);
pass.setFilterFieldName ("z");
pass.setFilterLimits (0.0, 5.0);
pass.filter (*indices);
pcl::RegionGrowingRGB<pcl::PointXYZRGB> reg;
reg.setInputCloud (cloud);
reg.setIndices (indices);
reg.setSearchMethod (tree);
reg.setDistanceThreshold (10);
reg.setPointColorThreshold (6);
reg.setRegionColorThreshold (5);
reg.setMinClusterSize (300);
このコードを実行すると、次のエラーが発生します。
[pcl::RegionGrowingRGB::prepareForSegmentation] 指定されたインデックスを空にします! [pcl::KdTreeFLANN::setInputCloud] 空の入力クラウドで KDTree を作成できません!