使用点云创建多边形

问题描述 投票:0回答:2

我正在尝试使用点云库创建一个多边形。它显示一个错误 没有找到匹配的参数列表。 这是我的代码:

pcl::可视化::PCLVisualizer::addPolygon(云);

感谢您的任何建议...

point-cloud-library point-clouds
2个回答
1
投票

有同样的错误,已解决。

pcl::visualization::PCLVisualizer::addPolygon(cloud);

pcl::visualization::PCLVisualizer::addPolygon<pcl::PointXYZ>(cloud);

确保您使用的是 pcl::PointXYZ。 例如如果您像这样创建云数据,

pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud

那么你需要使用 pcl::PointXYZRGB


0
投票

addPolygon 的定义:

template <typename PointT> bool
pcl::visualization::PCLVisualizer::addPolygon (
  const typename pcl::PointCloud<PointT>::ConstPtr &cloud,
  const std::string &id, int viewport)
{
  return (!addPolygon<PointT> (cloud, 0.5, 0.5, 0.5, id, viewport));
}

我们必须指定函数模板的类型:

viewer.addPolygon<pcl::PointXYZ>(cloud);

这是我的例子:

void PclVisualize(std::string filename)
{
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud = 
    pcl::PointCloud<pcl::PointXYZ>::Ptr (new pcl::PointCloud<pcl::PointXYZ>());
    pcl::io::loadPCDFile<pcl::PointXYZ>(filename,*cloud);
    
    pcl::visualization::PCLVisualizer viewer("pclviewer");
    viewer.setBackgroundColor(0,0,0);
    viewer.addPointCloud<pcl::PointXYZ>(cloud,"pclviewer");
    viewer.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE,1,"pclviewer");
    viewer.addCoordinateSystem(1.0);
    viewer.initCameraParameters();
    viewer.addPolygon<pcl::PointXYZ>(cloud);
    while(!viewer.wasStopped())
    {
        viewer.spinOnce(1000);
        std::this_thread::sleep_for(std::chrono::duration<long double,std::milli>(200));
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.