使用 .spinOnce() 时 PCLVisualizer 闪烁

问题描述 投票:0回答:1

初学者...基本上我想使用 PCLVisualizer 可视化点云,同时在可视化旁边执行代码。

到目前为止,我尝试使用 CloudViewer(相同的行为)以及以下基于 PCL_Tutorials 的代码,并且由于其线程安全而也是首选:

#include <pcl/visualization/pcl_visualizer.h>

int 
main ()
{
    pcl::visualization::PCLVisualizer viewer("Cloud Viewer");
    viewer.setBackgroundColor (1.0, 0.5, 1.0);
    pcl::PointXYZ o;
    o.x = 1.0;
    o.y = 0;
    o.z = 0;
    viewer.addSphere (o, 0.25, "sphere", 0);
    while (!viewer.wasStopped ())
    {
        // do something else
        viewer.spinOnce();
    }
    return 0;
}

但是,如果我运行此代码,查看器会在每次 .spinOnce() 调用时关闭并打开。 它应该像这样吗? 我可以在单个线程上使用 .spin() 并在不同的线程上进行计算吗?

我感觉这应该可以正常工作(窗口应该保持打开状态),但我错过了一些东西......一些提示将非常感激并提前感谢。

PS: 我目前使用的是 Fedora 39 下的 PCL 1.12.0。 这是我的 CMakeLists.txt:

cmake_minimum_required(VERSION 3.5)
project(pcl_viewer)

if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
    add_compile_options(-Wall -Wextra -Wpedantic -g -fdiagnostics-color)
endif()

find_package(PCL 1.2 REQUIRED)

include_directories(${PCL_INCLUDE_DIRS})

link_directories(${PCL_LIBRARY_DIRS})

add_definitions(${PCL_DEFINITIONS})

add_executable(${CMAKE_PROJECT_NAME} src/main.cpp)
target_link_libraries (${CMAKE_PROJECT_NAME} ${PCL_LIBRARIES})
point-cloud-library pcl
1个回答
0
投票

我认为这是因为 PCL 1.12.0 相当旧,而 VTK 9.2.6(PCL 用于可视化)相当新,它们不能正常工作。 VTK 发生了变化(我相信是在 9.1.0 中),这使得 PCL 有必要进行更改。 PCL 更改在 PCL 1.13.0 中发布。因此,请尝试使用较新的 PCL 版本(例如从源代码编译)。 显然还有一个更新 Fedora 软件包中的 PCL 版本的拉取请求:https://src.fedoraproject.org/rpms/pcl/pull-request/9

© www.soinside.com 2019 - 2024. All rights reserved.