【问题标题】:PCL: How continue refreshing of a viewer window?PCL:如何继续刷新查看器窗口?
【发布时间】:2014-05-06 18:38:22
【问题描述】:

我遇到了麻烦。

我在这里搜索了答案,我读到了这个:

Stream of Cloud Point Visualization using PCL

但我不明白怎么做。

我需要使用单独的线程来使用 PCL 查看器可视化存储在 C++ 中的一组点...这个数组将在另一个线程的每次详细说明时更新,清理并用新点重新填充它。

我需要 PCL 窗口,它是这些点的实时可视化工具...所以,在其他线程的每一个新的阐述结束时,可视化更新他的绘图。

这是我程序中的可视化功能代码:

void VisualizzaPointCl()
{
      //dichiarazione del cloud
    pcl::PointCloud<pcl::PointXYZ>::Ptr basic_cloud_ptr (new pcl::PointCloud<pcl::PointXYZ>);

       //Creazione del cloud

       for (int i=0;i<Clist.size();i++)
       {
            pcl::PointXYZ basic_point;
            basic_point.x = Clist[i].x;
            basic_point.y = Clist[i].y;
            basic_point.z = Clist[i].z;
            basic_cloud_ptr->points.push_back(basic_point);
        }

       //puntatore al cloud
      basic_cloud_ptr->width = (int) basic_cloud_ptr->points.size ();
      basic_cloud_ptr->height = 1;

       //avvia il viewer
      boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer;
      viewer = simpleVis(basic_cloud_ptr);

  //--------------------
  // -----loop-----
  //--------------------
  while (!viewer->wasStopped ())
  {
    viewer->spinOnce (100,true);
    boost::this_thread::sleep (boost::posix_time::microseconds (100000));
  }
}

如果我在每次详细说明时都启动此功能,输出没问题,但会阻止我的程序流程...

请帮帮我,我该怎么做?

【问题讨论】:

    标签: c++ multithreading point-cloud-library


    【解决方案1】:

    你正在运行一个无限的while循环。

    一种解决方案是将您的函数放在一个单独的线程中(或者在每一帧的其余代码之后调用spinOnce)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-29
      相关资源
      最近更新 更多