原博文链接在我的官方网站 , 网址是:
如何使用 pcl 库里面的可视化模块的键盘事件
#include bool iteration_flag = false;void keyboardEventOccurred(const pcl::visualization::KeyboardEvent& event, void* nothing){if(event.getKeySym() == "space" && event.keyDown()){iteration_flag = true;}}int main(){pcl::visualization::PCLVisualizer *p;p = new pcl::visualization::PCLVisualizer("PCL Windows");p->registerKeyboardCallback(&keyboardEventOccurred, (void*)NULL);while(iteration_flag != true){p->spinOnce();}return 0;}
需要注意的事项:
第一个:就是 , 你定义的这个p指针 , 必须要给它赋值实例化对象:p = new pcl::::("PCL "); , 否则程序编译不会出现错误 , 但是运行的时候会出现内存异常的运行错误 。
文章插图
第二个:就是这个自定义的键盘事件函数了:d()函数 。想要让这个函数可以使用 , 我们不需要再程序中循环的调用p->()方法 , 程序才能响应我们的这个键盘事件函数 。
第三个:一个也非常重要:其实上面的代码中 , 这段程序是不安全的:
while(iteration_flag != true){p->spinOnce();}
因为如何程序在这个地方一直的执行 , 如果你可视化的是一个点比较多的点云 , 那么一段时间后(大约不到5秒钟) , 你的电脑就会卡得要死!!!!
安全的程序应该是下面这个样子的:(参考网站:这里)
文章插图
我们添加延时函数 , 不让它一直执行()方法 。
#include
while (iteration_flag != true){p->spinOnce (100);boost::this_thread::sleep (boost::posix_time::microseconds (100000));}
其中()函数里面的100指的是:How long (in ms)theloop beto run.
【PCL 使用 pcl::visualization::PCLVisualizer】其中的boost::::sleep (boost:::: ());是延时微秒 , 也就是0.1秒 。
- gcc生成静态库.a和动态库.so和OpenCV3.4.11的安装及使用示例
- 在Verilog语言中,使用门级建模设计一个由1位全加器组成的4位全加器
- 山东中石药业有限公司耕葩草甘磷使用方法?
- 荣耀手机打破这项吉尼斯纪录,只用了10小时,网友:真中国荣耀! 手机使用最久吉尼斯记录
- 解密古代*生的各种称呼:*职地名*名都可使用
- vscode ssh连接失败
- 德州仪器TM4C1294KCPDT微控制器以太网LwIP使用教程
- iqoo tws air可以单耳使用吗
- idea 创建java web项目_使用IDEA创建javaweb项目
- 米哦啾|meoqo 使用介绍