【问题标题】:Exiting PCL viewer: wasStopped() not changing value even though window was closed退出 PCL 查看器:即使窗口关闭,wasStopped() 也不会改变值
【发布时间】:2019-01-21 10:45:02
【问题描述】:

我一直在尝试根据 PCL 网站上的this tutorial 使用 PCL Visualizer,并使用以下方法来可视化点云:

boost::shared_ptr<pcl::visualization::PCLVisualizer> createViewer (pcl::PointCloud<pcl::PointXYZ>::ConstPtr cloud, std::string& viewerName) 
{ 
    boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer (new pcl::visualization::PCLVisualizer (viewerName)); 

    viewer->setBackgroundColor (0, 0, 0); 
    viewer->addPointCloud<pcl::PointXYZ> (cloud, viewerName); 
    viewer->setPointCloudRenderingProperties (pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, viewerName); 
    viewer->addCoordinateSystem (1.0); 
    viewer->initCameraParameters (); 

    return viewer; 
} 

void visualizePointCloud (pcl::PointCloud<pcl::PointXYZ>::ConstPtr cloud) 
{ 
    std::string viewerName = "3D Viewer: Cloud"; 

    boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer; 
    viewer = createViewer(cloud, viewerName); 

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

一切都很好,但我似乎无法摆脱循环! 如果您通过单击“x”关闭查看器窗口,则没有任何反应,wasStopped() 仍然返回false,程序卡住了。

有人知道如何正确终止查看器,以便程序可以继续执行其余代码吗?我只是愚蠢吗? 提前谢谢了!

P.S.:我在 Mac OS 10.13.6 上使用 PCL 1.8.1(通过 Homebrew 安装)。

【问题讨论】:

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


    【解决方案1】:

    我有点尴尬,但答案真的很简单......在尝试了 Flumenque 的解决方案后偶然发现了它......事实证明一切都按预期工作,我太简单了以至于没有意识到:

    可以通过按键盘上的“q”来终止查看器。但是,您必须先在可视化区域内单击,即使窗口已经获得焦点!

    以为我会写下来以防万一其他人与我的愚蠢相提并论...;)

    【讨论】:

      【解决方案2】:

      您可以随时使用该方法关闭打开的查看器

      viewer->close();
      

      我猜它是在 PCL 1.6 中添加的:http://www.pcl-users.org/How-to-close-the-window-of-a-PCLViewer-and-how-to-make-it-stop-by-code-td3824712.html

      【讨论】:

      • 感谢您的提示@Flumenque。它正在关闭查看器。然而,这并不是我想要的。我正在尝试检查用户是否关闭了查看器窗口。关于如何检查窗口是否已关闭以便使用您提出的方法的任何提示?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多