1. 程式人生 > >PCL 使用 pcl::visualization::PCLVisualizer 類裡面的鍵盤事件方法 如何使用及需要注意的事項

PCL 使用 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.

Alt text

其中的boost::this_thread::sleep (boost::posix_time::microseconds (100000));是延時100000微秒,也就是0.1秒。

相關推薦

PCL 使用 pcl::visualization::PCLVisualizer 裡面鍵盤事件方法 如何使用需要注意事項

如何使用 pcl 庫裡面的視覺化模組的鍵盤事件 #include <pcl/visualization/pcl_visualizer.h> bool iteration_flag = false; void keyboardEv

html5標簽div可綁定鍵盤事件方法

標簽 select lec input 神器 selector tabindex 鍵盤 ner 我們知道鍵盤事件一般用在input這些可以獲取焦點的元素上,但是作為div,盡管官方上說可以綁定鍵盤事件,但是我寫了以後發現不生效,於是找答案。 果然,找到了一個神器:tabin

java抽象。抽象裡面的抽象方法必須被子全部複寫

抽象類:包含抽象方法的類稱為抽象類。 抽象方法:只宣告而未實現的方法稱為抽象方法。必須使用abstract關鍵字宣告。 *抽象類和抽象方法都必須使用abstract關鍵字宣告。 *抽象方法只宣告,不需要定義。 *抽象類不能宣告物件,必須被繼承。 *抽象類中的抽象方法必須被子類全部覆寫才能夠使用。 抽象類:

Python中的屬性、方法內置方法

包含 obj urn 資源 tin 初始化 方式 Coding 特性 1.類的屬性 成員變量 對象的創建 創建對象的過程稱之為實例化,當一個對象被創建後,包含三個方面的特性對象聚丙屬性和方法, 句柄用於區分不同的對象, 對象的屬性和方法,與類中的成員變量和成員函數對應, o

java this 子調父,父再調用子已覆蓋的方法屬性(又一次理解)

views args pop word per ews nds 如果 ext 之前一直以為 this關鍵字 是指調用者對象,但是這次才真正理解,this代表當前對象,但是指向調用者對象,其實就是多態的用法,如下所示:B 繼承了 A,在B 中調用A類的方法,在A 中用this

React學習之旅----事件方法改變this指向

import React, { Component } from 'react'; import '../assets/css/index.css' // react繫結屬性注意點 // class要換成className // for 要換成htmlFor // style class Home

java this 子調父,父再呼叫子已覆蓋的方法屬性(又一次理解)

之前一直以為 this關鍵字 是指呼叫者物件,但是這次才真正理解,this代表當前物件,但是指向呼叫者物件,其實就是多型的用法,如下所示:B 繼承了 A,在B 中呼叫A類的方法,在A 中用this 訪問成員變數和方法,此時,如果用this訪問成員變數,如下,this.s ,

js 中事件的event的注意事項,如何在普通函式中取到event事件物件呢?

Point1 應用場景不同時應當注意什麼?    onlick = function(e){            e可以直接取到event物件。即window.event;    }    function another(e){             var     e

android 後臺監聽按鍵事件方法demo

demo下載地址 =============== 1.概述:最方便的方式還是修改系統原始碼按鍵事件,將鍵值發廣播出來給應用監聽,其次是用設定裡面的輔助功能的AccessibilityService也可監聽按鍵事件,但是前提是需要在設定中開啟此輔助功能的開關才行,前面的

關於學習Kotlin子繼承父,成員屬性Override時候需要注意的問題

最近在學習Kotlin這門語言,作為一個java程式設計師兼android程式設計師,Kotlin又在17年強勢被google推崇為android官方開發語言之一,這就意味著,過去基於java語言的android開發人員,很有必要去掌握Kotlin這門語言,當然我這裡不去談論

PCLPCLVisualizer與CloudViewer簡介與區別

PCLVisualizer視覺化類是PCL中功能最全的視覺化類,與CloudViewer視覺化類相比,PCLVisualizer使用起來更為複雜,但該類具有更全面的功能,如顯示法線、繪製多種形狀和多個視口。 我們先從官方文件及原始碼看起: http://docs.pointclou

事件型--鍵盤與文本事件

ascii碼 undefine ima 文本 eof shift .com 攔截 使用 3個鍵盤事件,如下: keydown:當用戶按下鍵盤上的任意鍵時觸發,而且如果按住不放的話,會重復觸發此事件。 keypress:當用戶按下鍵盤上的字符鍵時觸發,而且如果按住不放的話,

PCL——Visualzer視覺化

目錄 程式碼 1. 視覺化單個點雲 建立視窗物件並給標題欄定義名稱"3D Viewer" 【注】定義"boost :: shared_ptr"智慧共享指標,保證該指標在整個程式全域性使用。 boost::shared_ptr<pcl

搬運~~js 裡面鍵盤事件對應的鍵碼

js 裡面的鍵盤事件經常用到,所以收集了鍵盤事件對應的鍵碼來分享下: keyCode 8 = BackSpace BackSpace keyCode 9 = Tab Tab keyCode 12 = Clear keyCode 13 = Enter keyCode 16 = Shift_L keyC

js 裡面鍵盤事件對應的鍵碼

js 裡面的鍵盤事件經常用到,所以收集了鍵盤事件對應的鍵碼來分享下: keyCode 8 = BackSpace BackSpacekeyCode 9 = Tab Ta

讓處於contentEditable=true的層裡面的圖片響應鍵盤事件

<SCRIPT LANGUAGE=javascript FOR=document EVENT=onkeyup>ku()</SCRIPT><div id="eee" ><img src="http://www.google.com/im

鍵盤事件

put ret tor author ava val content 代碼分析 inner !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><

jQuery基礎(鼠標事件,表單事件鍵盤事件,自定義事件 篇)

1.7 傳遞 ret 文本 leave 右鍵 page content gree 1.jQuery鼠標事件之click與dbclick事件 方法一:$ele.click()(不帶參數) <div id="test">點擊觸發<div> $(

總結Selenium WebDriver中一些鼠標和鍵盤事件的使用

ict 效果 control window 只需要 html 執行 text keyevent 在使用 Selenium WebDriver 做自動化測試的時候,會經常模擬鼠標和鍵盤的一些行為。比如使用鼠標單擊、雙擊、右擊、拖拽等動作;或者鍵盤輸入、快捷鍵使用、組合鍵使用

pyHook監聽用戶鼠標、鍵盤事件

word 日期 version 消息 彈出 lin .py cti ros 一、代碼部分:獲取用戶輸入信息,並與截圖一起保存到XX目錄下 # -*- coding: utf-8 -*- # import pythoncom import pyHook i