當前位置:編程學習大全網 - 源碼下載 - 如何在類中使用鍵盤事件方法以及需要註意的事項。

如何在類中使用鍵盤事件方法以及需要註意的事項。

如何使用PCL::Visualization::PCL Visualizer類中的鍵盤事件方法及註意事項?

如何使用pcl庫中可視化模塊的鍵盤事件

# include & ltPCL/visualization/PCL _ visualizer . h & gt;

bool iteration _ flag = false

void keyboard event occurred(const PCL::visualization::keyboard event & amp;事件,void* nothing){

if(event . getkey sym()= = " space " & amp;& ampevent.keyDown()){

叠代_標誌=真;

}

}

int main(){

PCL::visualization::PCLVisualizer * p;

p = new PCL::visualization::PCL visualizer(" PCL Windows ");

p->;register keyboard callback(& amp;keyboard event occurrence,(void *)NULL);

while(叠代_標誌!=真){

p->;spin once();

}

返回0;

}

註意事項:

第壹種:也就是必須給妳定義的p指針賦壹個實例化對象:p = new PCL::visualization::PCL visualizer(" PCL Windows ");否則程序編譯不會有錯誤,但是運行時會出現內存異常操作錯誤。

第二個是這個自定義鍵盤事件函數:keyboard event occurrence()函數。要使這個函數可用,我們不需要調用p->;SpinOnce()方法,程序可以響應我們的鍵盤事件函數。

第三個也很重要:實際上,在上面的代碼中,這個程序是不安全的:

while(叠代_標誌!=真){?

p->;spin once();

}

因為程序怎麽總是在這個地方執行,如果妳把壹個點雲可視化成更多的點,那麽過了壹段時間(大概不到5秒),妳的電腦就卡死了!!!!

安全程序應該是這樣的:(參考網站:這裏)

我們添加了壹個延遲函數來防止它總是執行spinOnce()方法。

# include & ltboost/thread/thread.hpp >

while(叠代_標誌!=真)?

{

p->;spin once(100);boost::this _ thread::sleep(boost::POSIX _ time::微秒(100000));?

}

其中,spinOnce()函數中的100是指:可視化循環應該允許運行多長時間(以毫秒為單位)。

其中,boost::this _ thread::sleep(boost::POSIX _ time::微秒(100000));延遲是100000微秒,也就是0.1秒。

  • 上一篇:JAVA是做什麽用的?
  • 下一篇:冷庫自動化有哪些明顯的好處?
  • copyright 2024編程學習大全網