如何可视TOF-传感器数据的PCL(使用Qt)的顺序?(How to visualize a seq

2019-09-21 03:22发布

我有这个TOF-传感器,我想以可视化的传感器的数据作为Qt的一个点云。 我转换的数据转换成pcl::PointCloud ,现在我想对其进行可视化。

传感器的API将发射每当一个被创建图片。 我将它发送到QVTKWidget对其进行可视化。 而我在这个片段中的代码(这是我从有尝试过在这里 ):

pcl::visualization::PCLVisualizer pvis ("test_vis", false); 
// 'false' prevents PCLVisualizer's own window to pop up

pvis.addPointCloud<pcl::PointXYZ>(pc); // pc is my point cloud

vtkSmartPointer<vtkRenderWindow> renderWindow = pvis.getRenderWindow();
widget.SetRenderWindow(renderWindow);

不过看起来这只是为了形象化一个稳定的点云,而不是点云的变化序列

问:有什么办法来更新cloud_xyz每当我的传感器发射一个新的图片?

Answer 1:

OK,经过一番艰难的,这里是我的解决方案:

在我VTKPointCloudWidget从继承QVTKWidget

pcl::visualization::PCLVisualizer vis ("vis", false); 

VTKPointCloudWidget::VTKPointCloudWidget(QWidget *parent) : QVTKWidget(parent)
{
   this->resize(500, 500);
   pcl::PointCloud<pcl::PointXYZ>::Ptr pc (new pcl::PointCloud<pcl::PointXYZ>);

   vis.addPointCloud<pcl::PointXYZ>(pc);
   vtkSmartPointer<vtkRenderWindow> renderWindow = vis.getRenderWindow();
   this->SetRenderWindow(renderWindow);
   this->show();
}

每当一个新的传感器图像被发射时,它被发送到:

void VTKPointCloudWidget::showPointCloud(SensorPicture pic)
{   
   // converts the sensor image to a point cloud
   pcl::PointCloud<pcl::PointXYZ>::Ptr pc = cvtSP2PC(pic);

   pc->width = pic.width;
   pc->height = pic.height;

   vis.updatePointCloud<pcl::PointXYZ>(pc); 

   this->update();
}


文章来源: How to visualize a sequence of TOF-Sensor data in PCL (with Qt)?