在PCL中读取并可视化多个.ply

时间:2017-07-11 05:46:38

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

我是Point Cloud Library(PCL)和C ++编程的新手。我有一个简单的代码来加载多个.ply文件并使用下面的代码可视化它们。它迭代循环以加载作为参数给出的多个.ply文件(比如test0.ply,test1.ply ... test99.ply)并一个接一个地显示它们。我需要尽可能快地将它们可视化,就像它们是视频的帧一样。

这是我迄今为止所尝试过的。以前<Button HorizontalAlignment="Left" Height="40" Width="40" FontFamily="Arial Black" Foreground="White" Margin="5,30,0,0" fa:Awesome.Content="Folder"> <StackPanel> <TextBlock> My Folders </TextBlock> </StackPanel> </Button> 被放置在我的循环之外,我什么都没看到。但后来我只是将它移到循环中并遍历列表并尝试将它们可视化。现在它可以工作,但它非常慢(只有1个FPS?!!)

出了什么问题?我应该如何更改代码以更快的速度显示模型?

spinOnce()

1 个答案:

答案 0 :(得分:0)

您之前的动画循环正在尽快运行:

while(!viewer.wasStopped()){
    viewer.spinOnce();
}

这可能意味着它渲染的图像比你看到的更快。如果你想要最大速度,你可以在那里放一些定时代码来测量每帧所需的时间。

现在,您的动画循环与文件读取循环相同,因此每个帧至少需要花费pcl::io::loadPLYFile从磁盘/ SSD读取文件所需的时间。文件系统,存储,文件解释和渲染一起每个文件大约需要1秒钟就不足为奇了。

如果你想要一个流畅的动画,请在原始的快速循环中加一个延迟:

import <thread>

while(!viewer.wasStopped()){
    viewer.spinOnce();
    std::this_thread::sleep_for(0.04s);
}