问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

类里面的键盘事件方法 如何使用及需要注

发布网友 发布时间:2022-11-19 22:27

我来回答

1个回答

热心网友 时间:2023-10-07 05:56

pcl::visualization::PCLVisualizer 类里面的键盘事件方法 如何使用及需要注意的事项

如何使用 pcl 库里面的可视化模块的键盘事件

#include <pcl/visualization/pcl_visualizer.h>

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::visualization::PCLVisualizer("PCL Windows");,否则程序编译不会出现错误,但是运行的时候会出现内存异常的运行错误。

第二个:就是这个自定义的键盘事件函数了:keyboardEventOccurred()函数。想要让这个函数可以使用,我们不需要再程序中循环的调用p->spinOnce()方法,程序才能响应我们的这个键盘事件函数。

第三个:一个也非常重要:其实上面的代码中,这段程序是不安全的:


while(iteration_flag != true){  

p->spinOnce();

}

因为如何程序在这个地方一直的执行,如果你可视化的是一个点比较多的点云,那么一段时间后(大约不到5秒钟),你的电脑就会卡得要死!!!!

安全的程序应该是下面这个样子的:(参考网站:这里)

我们添加延时函数,不让它一直执行spinOnce()方法。


#include <boost/thread/thread.hpp>


while (iteration_flag != true) 

{    

p->spinOnce (100);    boost::this_thread::sleep (boost::posix_time::microseconds (100000));  

}

其中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秒。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
阳光燕山学校是贵族学校吗 小米14ultra跌至新低 小米14ultra值得购买吗 马卡龙多少钱一个 马卡龙为什么那么贵 正宗马卡龙多少钱一个-马卡龙为什么这么贵 今年河北的迁西板栗多少钱一斤、生的 板栗什么时候上市能卖到几月呢? 6月份能买到新鲜板栗吗? 睡眠银行的生物信息专家林晨瀚讲座谁有听过,对他们的生物信息助眠方法讲 ... 材料力学实验简介 蔚来换电站是什么意思? PCL编译 SSE优化导致的移植错误 Illegal instruction 历代祖先是否包括女性祖先? Windows下安装Python+PCL 北大青鸟java培训:零基础学编程难吗? 北大青鸟设计培训:女生零基础学软件编程怎么样? 北大青鸟java培训:有没有适合高中生零基础学的软件编程课程? 北大青鸟设计培训:零基础可以学会软件编程吗? 北大青鸟java培训:零基础如何自学软件编程? 北大青鸟java培训:零基础能学软件编程吗? 日松LS25A 彩电 LC863532B-4SR3 LA76818 怎么进总线 linux的ls -l显示的total 4是什么意思?我使用ls -a -l显示的total12,同一个文件夹显示了不同的信息? 蓝炬星AIoT·R6系列集成灶三个款式各有什么差异? 竹笋怎么储存保鲜 如何保存竹笋 涤纶三件套可以买吗 远方的山楂树宋赫男怀的孩子是谁的? 《山里红》剧中十里香的孩子是谁的- 问一问 我想问问燕子全文赞美了燕子是什么的使者 杨桃怎么能放熟 杨桃怎样能催熟? 为什么说满族是一个文化民族? 打个冷颤什么意思 打个冷颤的意思 成都哪里有短期的电脑培训班? 谁可以告诉我成都哪里有短期电脑维修培训班 成都哪里有好点的短期电脑培训班吗? 幽灵行者怎么跳过开头 幽灵行者攻略 公元前1046年是公元前多少世纪,距今有多少年。 甜咖啡视频里的歌曲是什么? 甜咖啡cs是什么啊? 为什么孙辈戴孝有红色 怎么孙辈戴孝有红色 披麻戴孝颜色辈分顺序 参加亲人的葬礼,穿丧服的时候还要在白色的鞋子上带上红色的毛球球,那种球球叫什么名字,为什么要带! 孙子与外孙戴孝区别 甜咖啡制作的CS百人大战里面的背景音乐是什么歌? 急求 丧尸围城4怎么玩 丧尸围城4游戏攻略 丧尸围城4怎么投掷 丧尸围城4如何投掷 丧尸围城4怎么变白天和黑夜 大连市教育学院学信网有吗 2018年生产安全事故应急预案管理办法全文解读 - 信息提示 学生会舍务部个人总结