首页 文章

使用PCL的Cloud Point可视化流

提问于
浏览
12

我正在对RGB和深度数据进行一些处理并构建可视化的 Cloud 点,我目前使用的是PCL Visualizer,它工作正常 . 我希望将可视化工具放在不同的线程中(实时,因此它将重绘全局 Cloud 点,我尝试了提升线程,但我得到了运行时错误“VTK错误查找表”

任何人都知道如何在不同的线程中可视化 Cloud 点流?

1 回答

  • 7

    好吧,我现在就开始工作了,也许我之前做错了,这是我用boost thread和mutex做的

    bool update;
        boost::mutex updateModelMutex;
        pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZRGB>);
    
        void visualize()  
        {  
            // prepare visualizer named "viewer"
    
            while (!viewer->wasStopped ())
            {
                viewer->spinOnce (100);
                // Get lock on the boolean update and check if cloud was updated
                boost::mutex::scoped_lock updateLock(updateModelMutex);
                if(update)
                {
                    if(!viewer->updatePointCloud(cloud, "sample cloud"))
                      viewer->addPointCloud(cloud, colorHandler, "sample cloud");
                    update = false;
                }
                updateLock.unlock();
    
            }   
       }  
    
    
        int main()
        {
            //Start visualizer thread
            boost::thread workerThread(visualize); 
    
            while(notFinishedProcessing)
            {
               boost::mutex::scoped_lock updateLock(updateModelMutex);
              update = true;
              // do processing on cloud
               updateLock.unlock();
    
            }
            workerThread.join();  
        }
    

    更新:

    根据这个page原因是向可视化工具添加一个空点 Cloud 会导致事情变得疯狂所以我编辑了上面的代码

相关问题