【问题标题】:How to visualize a sequence of TOF-Sensor data in PCL (with Qt)?如何在 PCL(使用 Qt)中可视化一系列 TOF-Sensor 数据?
【发布时间】:2015-08-25 23:02:46
【问题描述】:

我有这个 TOF 传感器,我想在 Qt 中将传感器的数据可视化为点云。我将数据转换为pcl::PointCloud,现在我想将其可视化。

传感器的 API 会在创建图片时发出图片。我会将它发送到QVTKWidget 以可视化它。我用这个 sn-p 的代码(我从 here 得到的)尝试了它:

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

【问题讨论】:

    标签: qt vtk point-cloud-library


    【解决方案1】:

    好的,经过一番尝试,这是我的解决方案:

    在我的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();
    }
    

    【讨论】:

      猜你喜欢
      • 2014-05-02
      • 2020-09-20
      • 2021-04-06
      • 2012-10-24
      • 2014-05-26
      • 2012-02-18
      • 2012-04-23
      • 1970-01-01
      • 2017-03-28
      相关资源
      最近更新 更多