如何使用 pcl 库里面的可视化模块的键盘事件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
需要注意的事项:
第一个:就是,你定义的这个p
指针,必须要给它赋值实例化对象:p = new pcl::visualization::PCLVisualizer("PCL Windows");
,否则程序编译不会出现错误,但是运行的时候会出现内存异常的运行错误。
第二个:就是这个自定义的键盘事件函数了:keyboardEventOccurred()
函数。想要让这个函数可以使用,我们不需要再程序中循环的调用p->spinOnce()
方法,程序才能响应我们的这个键盘事件函数。
第三个:一个也非常重要:其实上面的代码中,这段程序是不安全的:
1 2 3 |
|
因为如何程序在这个地方一直的执行,如果你可视化的是一个点比较多的点云,那么一段时间后(大约不到5秒钟),你的电脑就会卡得要死!!!!
安全的程序应该是下面这个样子的:(参考网站:这里)
我们添加延时函数,不让它一直执行spinOnce()
方法。
1
|
|
1 2 3 4 5 |
|
其中spinOnce()
函数里面的100
指的是:How long (in ms) should the visualization loop be allowed to run.
其中的boost::this_thread::sleep (boost::posix_time::microseconds (100000));
是延时100000微秒,也就是0.1秒。